asp.net中GridView中的DropdownList回发的问题?

woaicsharp 2009-09-24 04:40:19
下面是GridView中的DropDownList绑定数据的方法。下面这个方法在Page_Load中被调用调用,但是我在页面不管选择DropDownList的哪个项页面都会重新加载一次并且都不管怎么选都只显示DropDownList第一项?虽然去掉ddl.AutoPostBack = true后不会出现这个问题,但SelectedIndexChanged事件就不能执行了。请问我要怎么解决啊。
private void BindDropDownList(DataTable dt)
{
for (int i = 0; i < GridView1.Rows.Count; i++)
{
DropDownList ddl = this.GridView1.Rows[i].FindControl("ddlTest") as DropDownList;
ddl.DataSource = dt;
ddl.DataTextField = "a";
ddl.DataValueField = "b";
ddl.DataBind();
ddl.Items.Insert(0, new ListItem("--请选择--", "0"));
ddl.AutoPostBack = true;
}
}
...全文
308 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
loveheronly 2010-07-29
  • 打赏
  • 举报
回复
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
int Index=((GridViewRow)((DropDownList)sender).NamingContainer).RowIndex;
DropDownList Dp = (DropDownList)GridView1.Rows[Index].FindControl("DropDownList1");

//然后进行你的操作;
}

是可以的,我试过了
mngzilin 2009-09-24
  • 打赏
  • 举报
回复
如果我上面的解决不了的话,我暂时没有办法了。可以等等楼下的回答
ICrazyBoy 2009-09-24
  • 打赏
  • 举报
回复
放在项模板里面吧!单独写个方法!绑定!这样可能好点!
woaicsharp 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 mngzilin 的回复:]
楼主,你的SelectedIndexChanged事件有问题吧。每个GridView的行中都有DropDownList,而且每个DropDownList都要调用该事件,所以,楼主你需要findcontrol到你的DropDownList,才能进行相应的操作
[/Quote]
我用了呢
yworknetj 2009-09-24
  • 打赏
  • 举报
回复
page_load里 if !ispostback吧

if(!ispostback)
{
BindDropDownList(DataTable dt);
}

在 DropDownList 中 的一个属性是:autoPostBack="true"

mngzilin 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 mngzilin 的回复:]
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
 int Index=((GridViewRow)((DropDownList)sender).NamingContainer).RowIndex; 
DropDownList Dp = (DropDownList)GridView1.Rows[Index].FindControl("DropDownList1");

  //然后进行你的操作;
}
[/Quote]

用这个方法才能正确的取到你的DropDownList1.SelectedValue的值。
mngzilin 2009-09-24
  • 打赏
  • 举报
回复
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
int Index=((GridViewRow)((DropDownList)sender).NamingContainer).RowIndex; DropDownList Dp = (DropDownList)GridView1.Rows[Index].FindControl("你的DropDownList的ID");

//然后进行你的操作;
}
mngzilin 2009-09-24
  • 打赏
  • 举报
回复
楼主,你的SelectedIndexChanged事件有问题吧。每个GridView的行中都有DropDownList,而且每个DropDownList都要调用该事件,所以,楼主你需要findcontrol到你的DropDownList,才能进行相应的操作
wxd_860825 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 woaicsharp 的回复:]
   但是我在页面不管选择DropDownList的哪个项页面都会重新加载一次并且都不管怎么选都只显示DropDownList第一项?[/Quote]
你既然有选择,那么你的SelectedValue就要有值,没有指定值当然就成默认的第一项了
g375636389 2009-09-24
  • 打赏
  • 举报
回复

GridView1 的绑定事件中写
woaicsharp 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lgnhhhwgq 的回复:]
就像6楼说的,你selectindexchanged要为下拉列表框重新赋值
[/Quote]
问题是你在这个时间里获取之前页面就回发了啊。那在什么位置获取那个选择的值啊??
lgnhhhwgq 2009-09-24
  • 打赏
  • 举报
回复
就像6楼说的,你selectindexchanged要为下拉列表框重新赋值
wxd_860825 2009-09-24
  • 打赏
  • 举报
回复
DropDownList.SelectedValue = ?????(自己要的值);
在下拉框执行完时,添上这句。因为你没有让它的默认项是被选中的
woaicsharp 2009-09-24
  • 打赏
  • 举报
回复
下面是GridView中的DropDownList绑定数据的方法。下面这个方法在Page_Load中被调用调用,但是我在页面不管选择DropDownList的哪个项页面都会重新加载一次并且都不管怎么选都只显示DropDownList第一项?虽然去掉ddl.AutoPostBack = true后不会出现这个问题,但SelectedIndexChanged事件就不能执行了。请问我要怎么解决啊。
    private void BindDropDownList(DataTable dt)
    {
        for (int i = 0; i < GridView1.Rows.Count; i++)
        {
            DropDownList ddl = this.GridView1.Rows[i].FindControl("ddlTest") as DropDownList;
            ddl.DataSource = dt;
            ddl.DataTextField = "a";
            ddl.DataValueField = "b";
            ddl.DataBind();
            ddl.Items.Insert(0, new ListItem("--请选择--", "0"));
            ddl.AutoPostBack = true;
        }
    }

我在Page_Load里这样调用的。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Request.QueryString["index"] != null)
{
current = Convert.ToInt32(Request.QueryString["index"]);
}
BindDropDownList(display(current));
}

}
其中display(current),是本页后台的一个调用数据库的方法。
mngzilin 2009-09-24
  • 打赏
  • 举报
回复
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//绑定DropDownList
}
}
woaicsharp 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 randomfeel 的回复:]
又是page_load里没加 if !ispostback吧
[/Quote]
我在是在
if (!Page.IsPostBack)
{
BindDropDownList(display(current));
}
中调用的。但还是不行
Iovswety 2009-09-24
  • 打赏
  • 举报
回复
很有可能是这样的问题
randomfeel 2009-09-24
  • 打赏
  • 举报
回复
又是page_load里没加 if !ispostback吧

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧