簡體   English   中英

當Checkbox選中/未選中Gridview C#時運行事件

[英]Run an event when Checkbox is Checked/Unchecked Gridview C#

我有一個具有4列的Gridview。 ItemTemplate所有內容一欄是一個CheckBox。 此Gridview綁定到數據源。 我想做的是選中“復選框”時,用位值“ 1”更新數據庫,如果我取消選中“復選框”,則執行相同的操作,但“ 0”。

我已經知道我的SQL代碼來更新數據庫,但是我不確定如何運行該事件,以使其查看gridview中復選框所位於的當前行。

這是CheckBox列。

<asp:TemplateField  HeaderText="Pick" ItemStyle-CssClass="hrGrid" HeaderStyle-CssClass="hdrHrBase">
<ItemTemplate>
<asp:CheckBox id="cbViewCustomer" runat="server" OnCheckedChanged="ViewCustomer" onAutoPostBack="true" Checked='<%#(Eval("chosen"))%>'/>        
</ItemTemplate>
</asp:TemplateField>

我是否像這樣使用EventArgs:問題是它會更新數據庫,但會更新所有行。 我想做的是僅更新Gridview中的當前行。 我只是不確定從這里去哪里。

protected void ViewCustomer(object sender, EventArgs e)
    {
        string SelectCustomer = "UPDATE tblcustomer Set chosen ='0'";
        NpgsqlCommand changedata = new NpgsqlCommand(SelectCustomer, con);
        con.Open();
        changedata.ExecuteNonQuery();
        con.Close();

    }

還是我應該做些不同的事情?

您可以使用gridview的OnRowCommand事件來做到這一點:-

將RowCommand事件與您的gridview關聯:

<asp:GridView ID="mygridview" runat="server" OnRowCommand="mygridview_OnRowCommand">

接下來,將CommandNameCommandArgument關聯到您的復選框:

<asp:TemplateField  HeaderText="Pick" ItemStyle-CssClass="hrGrid" >
   <ItemTemplate>
     <asp:CheckBox id="cbViewCustomer" runat="server" Checked='<%#(Eval("chosen"))%>' 
         CommandName="myCheckbox" CommandArgument="<%# Container.DataItemIndex %>"/>
   </ItemTemplate>
</asp:TemplateField>

在處理事件的代碼中:

protected mygridview_OnRowCommand (object sender, GridViewCommandEventArgs e)
{
     if(e.CommandName == "myCheckbox")
     {
          int rowIndex = Convert.ToInt32(e.CommandArgument);
          GridViewRow row = mygridview.Rows[rowIndex];
          bool ischecked = (row.FindControl("cbViewCustomer") as CheckBox).Checked;
     }
}

您也可以使用checbox選中的事件來執行此操作,但是如果您有多個控件,則觸發gridview命令事件而不是單個事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM