EditItemTemplate中dropdownlist只能取第一个值

pzzc18 2009-11-09 04:55:43
只是一个示例,目的是在GridView中的模板列中使用dropdownlist而,dropdownlist并是手动添加的数据..
页面中的代码:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" AutoGenerateEditButton="True"
DataKeyNames="aLogin" DataSourceID="SqlDataSource1" OnRowUpdating="GridView1_RowUpdating">
<Columns>
<asp:BoundField DataField="aLogin" HeaderText="aLogin" SortExpression="aLogin" ReadOnly="True" />
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="labstate" runat="server" Text='<%# Bind("aPass")%>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server">
<asp:ListItem Text="123" Value="123">123</asp:ListItem>
<asp:ListItem Text="456" Value="456">456</asp:ListItem>
<asp:ListItem Text="789" Value="789">789</asp:ListItem>
</asp:DropDownList> 
//这个下拉框不是绑定的
</EditItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

后台代码:

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
if (e.RowIndex >= 0)
{
DropDownList list = (DropDownList)GridView1.Rows[e.RowIndex].Cells[2].FindControl("DropDownList1");
string tmp = list.Items[list.SelectedIndex].Value.ToString();

//问题在这里:这个地方..list.SelectIndex无论选什么都是0 !!!!!
Response.Write("<Script>alert('" + list.SelectedIndex + "');</script>");
SqlDataSource1.UpdateCommand = "update tb_admin set apass='" +tmp + "' where alogin='"+GridView1.Rows[e.RowIndex].Cells[1].Text+"'";
}
}
...全文
96 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
pzzc18 2009-11-09
  • 打赏
  • 举报
回复
我的数据绑定是从设计界面拖拽来的..有没有哪位能给我详细的通过page_load绑定gridview并且能有模板列的代码...刚刚自己试过...报了很多错误..
  • 打赏
  • 举报
回复
将绑定写在Page_Load里的if(!Page.IsPostBack)里就可以了!~~
wszhoho 2009-11-09
  • 打赏
  • 举报
回复
!IsPostBack,应该是pageload里少了这个。
wxd_860825 2009-11-09
  • 打赏
  • 举报
回复
试试我这种情况
GridView1.DataBind();
DropDownList ddl;
for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
{
DataRowView mydrv = myds.Tables["Admin"].DefaultView[i];
if (Convert.ToString(mydrv["Sex"]).Trim() == "男")
{
ddl = (DropDownList)GridView1.Rows[i].FindControl("DropDownList1");
ddl.SelectedIndex = 0;
}
if (Convert.ToString(mydrv["Sex"]).Trim() == "女")
{
ddl = (DropDownList)GridView1.Rows[i].FindControl("DropDownList1");
ddl.SelectedIndex = 1;
}
}
pzzc18 2009-11-09
  • 打赏
  • 举报
回复
Page_load里没有代码, 数据是通过设计界面绑定的...会不会是因为这个啊?
zhuxiaojun2002 2009-11-09
  • 打赏
  • 举报
回复
楼上的说的很对
moudy 2009-11-09
  • 打赏
  • 举报
回复
请检查一下page_load时也没有绑定GridView数据的语句,如果有,是不是没有写在!IsPostBack里。

如果每次刷新都绑定数据,会出现你这个情况。
pzzc18 2009-11-09
  • 打赏
  • 举报
回复
都试过了.....都是选的第一项...
IHandler 2009-11-09
  • 打赏
  • 举报
回复
直接SelectedValue 不行吗

62,046

社区成员

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

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

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

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