亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我的 itemCommand DataGrid 事件僅在第二次單擊網格控件中的項目時觸發?

為什么我的 itemCommand DataGrid 事件僅在第二次單擊網格控件中的項目時觸發?

C#
瀟瀟雨雨 2022-11-13 14:27:15
我的 Web 表單數據網格響應點擊事件時遇到問題。請允許我解釋一下:在第一次加載頁面時,會填充一個下拉列表供用戶選擇一個項目。當用戶在下拉列表中選擇一個項目時,會出現一個數據網格(稱為 tmdg)(加載第二頁),其中包含 ButtonColumns。當用戶在數據網格的 ButtonColumns 之一中選擇一個按鈕時,按鈕的值從 false 翻轉為 true(或從 true 翻轉為 false,具體取決于它的起始值)。在 Page_Load 事件中,如果 Page.IsPostBack==true,我將事件處理程序分配給數據網格 (tmdg),如下所示:tmdg.ItemCommand += Tmdg_ItemCommand;Tmdg_ItemCommand 是調用 Save() 的方法,它翻轉數據表并最終翻轉數據網格單元格值。這一切都適用于數據網格中的第一次單擊。但是,對于隨后單擊數據網格,button.DataTextField 值僅在第二次單擊網格時翻轉。(本質上是“雙擊”而不是單擊)。我的目標是為每個單擊事件翻轉 ButtonColumn 中單元格的值。請注意:在第一次單擊值翻轉成功的網格后,如果我可以單擊沒有任何反應的單元格 (5,6),如果我單擊單元格 (7,2),我將翻轉該單元格 (7 ,2). 同樣,我可以在沒有任何反應的情況下再次單擊 (5,2),然后再次選擇 (5,2) 進行翻轉。(這就是我所說的“雙擊”的意思)其他注意事項:我已經嘗試在多個位置分配整個應用程序的事件處理程序(在頁面的 OnInit 中的 Page_Load 之前;或在 UpdatePanel 的 Panel_Init 方法中;或不管 Page_Load 中的 Page.IsPostBack;或在 Page_Load 之后)數據網格是一個動態加載的控件,它放置在 Panel 上,而 Panel 又放置在 UpdatePanel 上。我會盡量不在這里放置一大堆代碼,但確實想為您提供一些東西。為了簡潔起見,我對它進行了一些編輯。<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Push.aspx.cs" Inherits="TMUWF.Push"  MasterPageFile="~/Site.Master" %>    <asp:Content ID="Content3" ContentPlaceHolderID="MainContent" Runat="Server">        <asp:DropDownList ID="DropDownList1"             OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"            runat="server"             AutoPostBack="True"            AppendDataBoundItems="true"             OnMouseDown="this.size=10;"             OnFocusOut="this.size=1;"             OnDblClick="this.size=1;"            >        </asp:DropDownList>在我看來,當我在 BindGrid() 的兩個“if”語句中設置斷點時,第一個“if”經常被跳過,這意味著 Panel1 在那個時刻不包含我的數據網格 tmdg。這個“if”在被忽略的“first-click”中被特別跳過。如果您需要我提供更多信息,請告訴我!我希望你們中的一個能弄清楚我做錯了什么?。∪魏魏退性u論表示贊賞..
查看完整描述

1 回答

?
慕后森

TA貢獻1802條經驗 獲得超5個贊

我沒有在 Push.aspx.cs 中實例化數據網格 tmdg,而是將其添加到 Push.aspx 中,每次都會觸發點擊事件。我不確定為什么這在 .aspx 中有效但在 .aspx.cs 文件中無效。


下面是新代碼來解釋......


::::Push.aspx::::(此處添加了數據網格)


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Push.aspx.cs" Inherits="TMUWF.Push"  MasterPageFile="~/Site.Master" %>

    <asp:Content ID="Content3" ContentPlaceHolderID="MainContent" Runat="Server">

        <asp:DropDownList ID="DropDownList1" 

            OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"

            runat="server" 

            AutoPostBack="True"

            AppendDataBoundItems="true" 

            OnMouseDown="this.size=10;" 

            OnFocusOut="this.size=1;" 

            OnDblClick="this.size=1;"

            >

        </asp:DropDownList>


        <asp:UpdatePanel  ID="UpdatePanel1" runat="server" UpdateMode="Conditional" OnInit="Panel_Init">

            <contenttemplate>

                <h3 id="div-Col-Title">Node</h3>

                <asp:Panel runat="server" ID="Panel1">

                    <div id="div-Row-Title"><h3 >Channel</h3></div>

                    <asp:DataGrid ID="tmdg" CssClass="gvClass push" AutoGenerateColumns="false" runat="server" >

                    </asp:DataGrid>

                </asp:Panel>

            </contenttemplate>

        </asp:UpdatePanel>

    </asp:Content>

::::Push.aspx.cs:::: (此處刪除了數據網格)


        //DataGrid tmdg = new DataGrid

        //{

        //    AutoGenerateColumns = false,

        //    CssClass = "gvClass push"            

        //};

關于為什么的想法表示贊賞。


查看完整回答
反對 回復 2022-11-13
  • 1 回答
  • 0 關注
  • 97 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號