Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.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# 在gridview中选择多个复选框_C#_Asp.net - Fatal编程技术网

C# 在gridview中选择多个复选框

C# 在gridview中选择多个复选框,c#,asp.net,C#,Asp.net,在此处输入代码我在GridView模板中有一个复选框。选中复选框时,它应该向存储过程发送一个列值,并在另一个gridview中显示所需的结果。 选中两个复选框时,两列的值应显示在另一个gridview中 我的问题是,单击第二个复选框会删除第一个复选框的值,并且只会导致第二个复选框的值显示在另一个gridview中 protected void ChkRule_CheckedChanged(object sender, EventArgs e) { StringColle

在此处输入代码我在
GridView
模板中有一个
复选框。选中
复选框时,它应该向存储过程发送一个列值,并在另一个
gridview
中显示所需的结果。 选中两个复选框时,两列的值应显示在另一个gridview中

我的问题是,单击第二个复选框会删除第一个复选框的值,并且只会导致第二个复选框的值显示在另一个gridview中

 protected void ChkRule_CheckedChanged(object sender, EventArgs e)
    {
        StringCollection sc = new StringCollection();

        for (int i = 0; i < gdYojnaDtl.Rows.Count; i++)
        {

            string yojnaNo = "";
            CheckBox chl = (CheckBox)gdYojnaDtl.Rows[i].Cells[0].FindControl("CheckBox1");
            //CheckBox chl = (CheckBox)sender;
            if (chl != null)
            {
                if (chl.Checked == true)
                {




                    int rowsNo = (Convert.ToInt16(chl.ToolTip) - 1); 
                    yojnaNo = ((Label)gdYojnaDtl.Rows[rowsNo].FindControl("lblYojnaNo")).Text;
                    sc.Add(yojnaNo);


                }

            }
        }

    foreach (string obj in sc)
    {

        objyojnadetail4.YojnaNo = obj;
        DataTable city = objyojnadetail4.Selectcity();
        gdCityDetail.DataSource = city;



        gdCityDetail.DataBind();

    }

}





 <Columns>
                        <asp:TemplateField HeaderText="Scheme Code">
                        <ItemTemplate>
                            <asp:Label ID="lblYojnaNo" runat="server" Text='<%#Eval("Yojna_No")%>' />

                        </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Scheme Name">
                         <ItemTemplate>
                     <asp:Label ID="lblYojnaName" runat="server" Text='<%#Eval("Yojna_Name")%>' />

                        </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Assistant Name">
                         <ItemTemplate>
                         <asp:Label ID="lblAsstName" runat="server" Text=' <%#Eval("Asst_Name")%>' />

                        </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Select for City">
                        <ItemTemplate>
                 <asp:CheckBox ID="CheckBox1"  runat="server"    AutoPostBack="true" 
                  oncheckedchanged="ChkRule_CheckedChanged" 
                  ToolTip="<%#Container.DataItemIndex+1 %> "   CommandName="cbCity"/>





                        </ItemTemplate>
                        </asp:TemplateField>

                    </Columns>
protectedvoid ChkRule\u CheckedChanged(对象发送方,事件参数e)
{
StringCollection sc=新的StringCollection();
for(int i=0;i
/**此代码经过测试,运行良好**
//在aspx页面
//此按钮位于gridview外部,但在同一页面中
//codebehind中单击事件的方法

protected void btnredirect_Click(object sender, EventArgs e)
{
    Button btn = sender as Button;
    switch (btn.ID)
    {
        case "check":
            {
                for(int i=0;i<Gvshowcart.Rows.Count; i++)
                {
                    CheckBox chl =     (CheckBox)Gvshowcart.Rows[i].Cells[0].FindControl("cheker");
                    if (chl != null)
                    {
                        if (chl.Checked == true)
                        {
                            chl.Checked = false;
                        }
                        else
                        {
                            chl.Checked = true;
                        }
                    }

                }

            }
            break;
    }
protectedvoid btnredirect\u单击(对象发送方,事件参数e)
{
按钮btn=发送方为按钮;
交换机(btn.ID)
{
案例“检查”:
{

对于(int i=0;我是否从
Page\u Load
的回发中重新加载
GridView
?如果(!Page.IsPostBack)DataBindGrid()使用此:
@tim执行您的解决方案不会在网格视图中绑定数据,因为默认情况下启用了
ViewState
。如果在每次回发时重新加载网格,则可以防止触发事件并覆盖更改的值(如
复选框。选中
).我不能发布我的代码,但你的解决方案不是working@user1942107Tim是对的,你从一开始就做了一些关于数据库和网格是如何呈现的,或者你已经禁用了视图状态。如果你不能发布你的代码,你可以在一个空白页面上创建一个简单的工作示例,并在这里发布它(具有相同的问题)
protected void btnredirect_Click(object sender, EventArgs e)
{
    Button btn = sender as Button;
    switch (btn.ID)
    {
        case "check":
            {
                for(int i=0;i<Gvshowcart.Rows.Count; i++)
                {
                    CheckBox chl =     (CheckBox)Gvshowcart.Rows[i].Cells[0].FindControl("cheker");
                    if (chl != null)
                    {
                        if (chl.Checked == true)
                        {
                            chl.Checked = false;
                        }
                        else
                        {
                            chl.Checked = true;
                        }
                    }

                }

            }
            break;
    }