Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ASP.NET中将数据行从UI控件获取到ascx.cs?_C#_Asp.net - Fatal编程技术网

C# 如何在ASP.NET中将数据行从UI控件获取到ascx.cs?

C# 如何在ASP.NET中将数据行从UI控件获取到ascx.cs?,c#,asp.net,C#,Asp.net,我有一个绑定到DataGrid的DataTable。将在数据行中创建一个复选框。当我选中复选框时,代码隐藏被命中,但我不知道如何获取数据行 <asp:DataGrid ID="dgCaseStatusTypes" runat="server" AutoGenerateColumns="False" CellPadding="5"

我有一个绑定到DataGrid的DataTable。将在数据行中创建一个复选框。当我选中复选框时,代码隐藏被命中,但我不知道如何获取数据行

  <asp:DataGrid   ID="dgCaseStatusTypes" 
                        runat="server" 
                        AutoGenerateColumns="False" 
                        CellPadding="5"
                        DataKeyField="InmateCaseStatusID" 
                        OnItemCommand="dgCaseStatusTypes_ItemCommand">
        <Columns>
            <asp:BoundColumn DataField="Code" HeaderText="Code"></asp:BoundColumn>
            <asp:BoundColumn DataField="Text" HeaderText="Text"></asp:BoundColumn>

            <asp:TemplateColumn HeaderText="Prebook Visible" >
                <ItemTemplate>
                    <asp:CheckBox   id="chkBox1" 
                                    runat="server" 
                                    AutoPostBack="true" 
                                    checked= '<%# Eval("IsPreBookVisibleBool") %>' 
                                    OnCheckedChanged="OnCheckedChanged_Event"
                                    ></asp:CheckBox>
                 </ItemTemplate>
            </asp:TemplateColumn>
     </Columns>
</asp:DataGrid>

protected void OnCheckedChanged_Event(object sender, System.EventArgs e)
{
     CheckBox cb = sender as CheckBox;
     //how to get the DataRow that created this control?
}

受保护的void OnCheckedChanged_事件(对象发送方,System.EventArgs e)
{
复选框cb=发送方作为复选框;
//如何获取创建此控件的数据行?
}

您需要将数据网格的数据源保持在会话或视图状态。完成此操作后,您需要知道选中复选框时单击的行。然后可以获取绑定到该行的对象

我只需要点击内容的ID和复选框状态。以下几点对我有用

 <asp:DataGrid   ID="dgCaseStatusTypes" 
                    runat="server" 
                    AutoGenerateColumns="False" 
                    CellPadding="5"
                    DataKeyField="InmateCaseStatusID" 
                    OnItemCommand="dgCaseStatusTypes_ItemCommand">
    <Columns>
        <asp:TemplateColumn HeaderText="ID Label" Visible="false">
            <ItemTemplate>
                <asp:Label  id="IDLabel" 
                            runat="server" 
                            AutoPostBack="true" 
                            Text='<%# Eval("InmateCaseStatusID") %>' 
                            ></asp:Label>
             </ItemTemplate>
        </asp:TemplateColumn>

        <asp:BoundColumn DataField="Code" HeaderText="Code"></asp:BoundColumn>
        <asp:BoundColumn DataField="Text" HeaderText="Text"></asp:BoundColumn>

        <asp:TemplateColumn HeaderText="Prebook Visible" >
            <ItemTemplate>
                <asp:CheckBox   id="chkBox1" 
                                runat="server" 
                                AutoPostBack="true" 
                                checked= '<%# Eval("IsPreBookVisibleBool") %>' 
                                OnCheckedChanged="OnCheckedChanged_Event"
                                ></asp:CheckBox>
             </ItemTemplate>
        </asp:TemplateColumn>
    </Columns>
</asp:DataGrid>


     protected void OnCheckedChanged_Event(object sender, System.EventArgs e)
        {
            CheckBox cb = sender as CheckBox;
            bool isChecked = cb.Checked; 
            DataGridItem dgi = cb.NamingContainer as DataGridItem;
            Label lbl = dgi.FindControl("IDLabel") as Label;
            string Id = lbl.Text as string; 
}

受保护的void OnCheckedChanged_事件(对象发送方,System.EventArgs e)
{
复选框cb=发送方作为复选框;
bool isChecked=cb.已检查;
DataGridItem dgi=cb.NamingContainer作为DataGridItem;
标签lbl=dgi.FindControl(“IDLabel”)作为标签;
字符串Id=lbl.Text作为字符串;
}

< /代码>如果您还处于开发早期,请考虑从<代码> DATAGRID 切换到<代码> GRIDVIEW。
GridView
是在ASP.NET 2.0中构建的,用于替换
DataGrid