请孟子等高手帮忙, 在两层嵌套DataGrid中, 如何对子DataGrid中的DropDownList 绑定数据 ? 急急

appetizing_fish 2006-10-25 05:38:18
如题
...全文
158 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
linghua_job 2006-11-29
  • 打赏
  • 举报
回复
帮顶
sfwxw0456 2006-11-01
  • 打赏
  • 举报
回复
路过,学习。。。
顺便帮顶上去。。
appetizing_fish 2006-10-25
  • 打赏
  • 举报
回复
Eddie005:

能否给一个有EditTemplate的,谢谢
appetizing_fish 2006-10-25
  • 打赏
  • 举报
回复
TO:Eddie005

你给出的是在ItemTemplate中的(这个是可以), 我要的是在EditTemplate中
appetizing_fish 2006-10-25
  • 打赏
  • 举报
回复
To: Eddie005
把里层的DataGrid做成usercontrol , 没做过,现在也没时间. 谢谢提示
To: 孟子
我现有两层DataGrid, 第一层dgSeason, 第二层: dgRoom,

Protected Sub dgRoom_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs)
Dim container As Control = e.Item
Dim itemType As ListItemType = e.Item.ItemType

If (itemType = ListItemType.Item OrElse itemType = ListItemType.AlternatingItem) Then
If (e.Item.DataItem Is Nothing) Then
Return
End If
ElseIf (itemType = ListItemType.Footer) Then
If (Not Me.ViewState("AllotmentSeasonID") Is Nothing) Then
Dim btnAddRoom As ImageButton = e.Item.FindControl("btnAddRoom")
If (Not btnAddRoom Is Nothing) Then
btnAddRoom.CommandArgument = Me.ViewState("AllotmentSeasonID")
End If
End If
Me.ViewState("AllotmentSeasonID") = Nothing

End If

Dim item As DataGridItem

For Each item In dgSeason.Items
Dim dgRoom As DataGrid = item.FindControl("dgRoom")
If Not dgRoom Is Nothing Then
Dim itemOption As DataGridItem
For Each itemOption In dgRoom.Items
Dim btnDeleteRoom As System.Web.UI.WebControls.LinkButton
btnDeleteRoom = itemOption.FindControl("btnDeleteRoom")
If Not btnDeleteRoom Is Nothing Then
btnDeleteRoom.Attributes.Add("onclick", "return confirm('Are you sure you want to delete?')")
End If
Next
End If
Next
End Sub



在HTML中有 :

<ITEMTEMPLATE>
<ASP:LABEL id="lblRoomType" runat="server" cssclass="contentTableGrey" text='<%# Server.HtmlEncode(DataBinder.Eval (Container.DataItem, "RoomTypeID").ToString()) %>'>
</ASP:LABEL>
</ITEMTEMPLATE>
<EDITITEMTEMPLATE>
<!--<ASP:TEXTBOX id="txtRoomType" runat="server" width="50px" cssclass="textBox" maxlength="50" text='<%# DataBinder.Eval (Container.DataItem, "RoomTypeID") %>' textmode="SingleLine"></ASP:TEXTBOX>-->
<asp:DropDownList ID="lstRoomType" Runat="server"></asp:DropDownList>
</EDITITEMTEMPLATE>


在dgRoom_ItemDataBound事件中能找到lblRoomType, 但就是找不到lstRoomType

已经试了一天了, 还没结果,很着急, 请孟子明示
Eddie005 2006-10-25
  • 打赏
  • 举报
回复
直接绑定也可以:
<asp:datagrid id="DataGrid1" runat="server">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:datagrid id="Datagrid2" runat="server">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:DropDownList id="DropDownList1" runat="server" DataSource='<%=DropDownDataSource%>'></asp:DropDownList>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>

当然别忘了在代码中定义DropDownDataSource:
public DataTable DropDownDataSource
{
//返回数据源
}

不过这虽然可以解决当前的问题,但后续还有其他问题可能比较麻烦,例如处理子DataGrid的翻页或者ItemCommand,个人还是推荐用usercontrol~
孟子E章 2006-10-25
  • 打赏
  • 举报
回复
子DataGrid李依然有绑定事件啊。
Eddie005 2006-10-25
  • 打赏
  • 举报
回复
把里层的DataGrid做成usercontrol吧,思路一下子就简单明了了~
发帖
.NET社区

6.1w+

社区成员

.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
帖子事件
创建了帖子
2006-10-25 05:38
社区公告

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

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