Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.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_Drop Down Menu_Using Statement - Fatal编程技术网

C# 在Gridview寻呼机中动态添加页面大小下拉列表

C# 在Gridview寻呼机中动态添加页面大小下拉列表,c#,asp.net,gridview,drop-down-menu,using-statement,C#,Asp.net,Gridview,Drop Down Menu,Using Statement,我有一个Gridview,它的下拉列表必须在运行时添加到寻呼机行。我已经在Gridview行中添加了以下代码 protected void gv_transaction_RowCreated(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.Pager) { using (DropDownList ddlpagesize = new DropDownLi

我有一个Gridview,它的下拉列表必须在运行时添加到寻呼机行。我已经在Gridview行中添加了以下代码

protected void gv_transaction_RowCreated(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.Pager)
    {
        using (DropDownList ddlpagesize = new DropDownList())
        {
            ddlpagesize.Items.Add("25");
            ddlpagesize.Items.Add("50");
            ddlpagesize.Items.Add("75");
            ddlpagesize.Items.Add("100");
            ddlpagesize.Items.Add("150");
            ddlpagesize.Items.Add("200");
            ddlpagesize.AutoPostBack = true;
            ddlpagesize.Items.FindByText(gv_transaction.PageSize.ToString()).Selected = true;
            ddlpagesize.SelectedIndexChanged += ddlpagesize_SelectedIndexChanged;
            using (Table tbl = (Table)e.Row.Cells[0].Controls[0])
            {
                using (TableCell cell = new TableCell())
                {
                    cell.Controls.Add(new LiteralControl("<b>Page Size: </b>"));
                    cell.Controls.Add(ddlpagesize);
                    tbl.Rows[0].Cells.AddAt(0, cell);
                }
            }
        }
    }
}
protected void ddlpagesize_SelectedIndexChanged(object sender, EventArgs e)
{
    using (DropDownList ddlpagesize = (DropDownList)sender)
    {
        gv_transaction.PageSize = int.Parse(ddlpagesize.SelectedValue);
        gv_transaction.PageIndex = 0;
        BindTransactionGrid();
    }
}
现在,当我更改dropdownlist值时,SelectedIndex change事件未触发。
但有趣的是,当我从页面大小Dropdownlist的启动中删除using语句时;Selectedindex事件完全启动。请告诉我是否与Gridview中动态下拉列表的dispose of dropdownlist和selectedIndex Changed事件有任何关系

您不需要在using语句中包装asp.net控件,asp.net将在控件上自动调用dispose,我认为您的using语句导致过早地处理它们。

为什么要处理刚刚创建的DropDownList,为什么您认为这不会产生副作用?您正在处理在ViewState中持久化之前的对象,因此它不会在回发时引发任何事件。作为一个好的编程习惯,我们必须处理动态创建的控件。不是吗?ASP.NET控件会在结束时自动释放,因此您不应该手动释放它们。事实上,整个页面将在HTML呈现并发送到clientHTTP后被处理,因为TTP是无状态的。