很急!高分求救!!GridView中DropDownlist的怪异问题!!!

BlueSF 2012-12-22 04:09:38
GridView表格中有一列Dropdownlist,在行绑定事件中给Dropdownlist赋值,代码如下:

Protected Sub grdMeisai_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles grdMeisai.RowDataBound
Dim ddlKaikeiNendo As DropDownList

If e.Row.RowType = DataControlRowType.DataRow Then
e.Row.Attributes.Add("OnClick", "Org('" & e.Row.ClientID & "'); setSelectedRow('" & e.Row.RowIndex & "')")

ddlKaikeiNendo = CType(e.Row.FindControl("ddlKaikeiNendo"), DropDownList)
ddlKaikeiNendo.Items.AddRange(mDropDownDSource)
ddlKaikeiNendo.SelectedIndex = ddlKaikeiNendo.Items.IndexOf(ddlKaikeiNendo.Items.FindByValue(mdsMeisai.Rows(e.Row.RowIndex)(C_Col_会計年度).ToString))

End If
End Sub

出现的问题是,表格中的所有Dropdownlist的值,全部是最后一行的值。断点跟踪发现,每一行赋值时,把已经存在的Dropdownlist也赋值了。
感觉是e.Row.FindControl找到的Dropdownlist不是当前行的,而是页面所有的。
这个问题非常的怪异,麻烦大家给看看,很着急!!!
...全文
172 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
BlueSF 2012-12-24
  • 打赏
  • 举报
回复
问题解决了,按照9楼的提示,重新写了Dropdownlist的数据绑定方式。 ddlKaikeiNendo.Items.Clear() For i As Integer = 0 To mDropDownDSource.Length - 1 ddlKaikeiNendo.Items.Add(New ListItem(mDropDownDSource(i).Text, mDropDownDSource(i).Value)) Next 这样就没有问题了。 谢谢大家了!
踏平扶桑 2012-12-24
  • 打赏
  • 举报
回复
ddlKaikeiNendo.Items.AddRange(mDropDownDSource) 你这里没有做区分吧? 所有的绑定都是这个数据源,并且最后FindByValue的值也是一样的。最后肯定都是同一个数据。
H_Gragon 2012-12-24
  • 打赏
  • 举报
回复
取出datalist的rows.count用for循环,每一样就是row[i].FindControl
glassy2000 2012-12-24
  • 打赏
  • 举报
回复
以我的经验,在gridview中的dropdwonlist控件不能用绑定给其赋值,得一个一个加入gvw.Items.Insert(0, "a");
BlueSF 2012-12-24
  • 打赏
  • 举报
回复
引用 4 楼 jason_dct 的回复:
用if(!ispXXXXX) 或 赋值前 置空
每次赋值改变的都是GridView中所有的Dropdownlist,这点很诡异。
BlueSF 2012-12-24
  • 打赏
  • 举报
回复
引用 3 楼 yezhenhua101 的回复:
ddlKaikeiNendo = CType(e.Row.FindControl("ddlKaikeiNendo"), DropDownList) 这边加个ddlKaikeiNendo.Items.Clear();看看 ddlKaikeiNendo.Items.AddRange(mDropDownDSource) mDropDownDSource这个是哪来的
mDropDownDSource是ListItem数组,Dropdownlist的数据源。 Clear试过了,不好用。加载的数据源是没有问题的,问题出在让Dropdownlist中的某一项选择,给 ddlKaikeiNendo.SelectedIndex赋值,改变的不是当前行的Dropdownlist,而是GridView中所有Dropdownlist。
段传涛 2012-12-22
  • 打赏
  • 举报
回复
用if(!ispXXXXX) 或 赋值前 置空
一一一一 2012-12-22
  • 打赏
  • 举报
回复
ddlKaikeiNendo = CType(e.Row.FindControl("ddlKaikeiNendo"), DropDownList) 这边加个ddlKaikeiNendo.Items.Clear();看看 ddlKaikeiNendo.Items.AddRange(mDropDownDSource) mDropDownDSource这个是哪来的
BlueSF 2012-12-22
  • 打赏
  • 举报
回复
前台代码: <div id="detaildiv" runat="server" class="naiyouList2" style="width:983px; height: 529px; overflow-x: auto; overflow-y: auto;" onscroll="scrollup('detaildiv', 'divheader') "> <asp:GridView ID="grdMeisai" runat="server" AutoGenerateColumns="False" ShowHeader="False" Width="966px" BorderStyle="Solid" BorderColor="#AEC9E3" BorderWidth="1px" TabIndex="29" CssClass="cssImeInactive"> <Columns> <asp:TemplateField> <ItemTemplate> <asp:DropDownList ID="ddlKaikeiNendo" runat="server"></asp:DropDownList> </ItemTemplate> <ItemStyle Width="74px" HorizontalAlign="Center" /> </asp:TemplateField </Columns> </asp:GridView> </div>
BlueSF 2012-12-22
  • 打赏
  • 举报
回复
VS2005 WebApplication

62,243

社区成员

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

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

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

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