Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.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_Gridview - Fatal编程技术网

C# 回发时的GridView行命令

C# 回发时的GridView行命令,c#,asp.net,gridview,C#,Asp.net,Gridview,我的C#代码: 问题是,当我点击按钮1启动GridView_row命令时,由于回发,它不起作用。 当我从PageLoad中删除代码时,如果(IsPostBack)工作正常。 所以我如何解决这个问题。 我使用的是ASP.Net C#SQL Server 2008。正如Michael Moore指出的,这是一个相关的问题: 几乎总是当我看到if(IsPostBack)时,它实际上应该是一个事件处理程序。处理适当的事件。这将使代码更具可读性和可维护性,可能也解决了这个问题 因此,如果您希望触发事件,请

我的C#代码:

问题是,当我点击按钮1启动GridView_row命令时,由于回发,它不起作用。 当我从PageLoad中删除代码时,如果(IsPostBack)工作正常。 所以我如何解决这个问题。
我使用的是ASP.Net C#SQL Server 2008。

正如Michael Moore指出的,这是一个相关的问题:


几乎总是当我看到
if(IsPostBack)
时,它实际上应该是一个事件处理程序。处理适当的事件。这将使代码更具可读性和可维护性,可能也解决了这个问题

因此,如果您希望触发事件,请不要在回发时在
Page\u Load
中进行
DataBind
。而是将事件处理到
DataBind
GridView
。然后首先触发
row命令

在这种情况下,很难建议您应该处理什么类型的事件,因为情况似乎很复杂。也许您应该添加另一个按钮,并应用click事件处理程序中的逻辑。另一种方法是处理所有相关控件的所有事件

因此,让所有复选框使用相同的事件处理程序
CheckBox\u CheckedChanged
,并从所有其他相关控件调用
DataBind
,例如从
RadioButtonList
s
SelectedIndexChanged
-事件:

protected void CheckBox_CheckedChanged(Object sender, EventArgs e)
{
    DataBind();
}

private void DataBind()
{
    if (CheckBox1.Checked == false && CheckBox2.Checked == false && CheckBox3.Checked == false && CheckBox4.Checked == false && CheckBox5.Checked == false && RadioButtonList1.SelectedItem == null)
    {
        GridView2.DataSource = SqlDataSource5;
        GridView2.DataBind();
    }
    else
    {
        if (RadioButtonList1.SelectedItem == null)
        {
            GridView2.DataSource = SqlDataSource4;
            GridView2.DataBind();
        }
        else
        {
            GridView2.DataSource = SqlDataSource6;
            GridView2.DataBind();
        }
    }
}

几乎总是当我看到
if(IsPostBack)
时,它实际上应该是一个事件处理程序。处理适当的事件。这将使代码更具可读性和可维护性,并且可能也解决了这个问题。@TimSchmelter我是如何解决这个问题的?@TimSchmelter为什么不发布到这个链接,它可能会回答这个问题?:)
protected void CheckBox_CheckedChanged(Object sender, EventArgs e)
{
    DataBind();
}

private void DataBind()
{
    if (CheckBox1.Checked == false && CheckBox2.Checked == false && CheckBox3.Checked == false && CheckBox4.Checked == false && CheckBox5.Checked == false && RadioButtonList1.SelectedItem == null)
    {
        GridView2.DataSource = SqlDataSource5;
        GridView2.DataBind();
    }
    else
    {
        if (RadioButtonList1.SelectedItem == null)
        {
            GridView2.DataSource = SqlDataSource4;
            GridView2.DataBind();
        }
        else
        {
            GridView2.DataSource = SqlDataSource6;
            GridView2.DataBind();
        }
    }
}