• 主页
  • ASP
  • .NET Framework
  • Web Services
  • VB
  • VC
  • 图表区
  • 分析与设计
  • 组件/控件开发
  • LINQ

很急!高分求救!!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不是当前行的,而是页面所有的。
这个问题非常的怪异,麻烦大家给看看,很着急!!!
...全文
130 点赞 收藏 10
写回复
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
回复 点赞
发动态
发帖子
.NET技术社区
创建于2007-09-28

4.9w+

社区成员

66.8w+

社区内容

.NET技术交流专区
社区公告
暂无公告