This.bind()只使用第一个数据集,而不是第二个数据集
本文关键字:数据集 第二个 第一个 bind This | 更新日期: 2023-09-27 18:08:28
我有一个问题,我想绑定一个数据集与aspx形式的标签从后面的代码,我在一个函数中使用2个数据集,但问题是,它是绑定第一个数据集只。
我的代码是这样的: private void fill()
{
DateTime dat;
if (txtDate.Text == "")
dat = DateTime.Now;
else
dat = DateTime.ParseExact(txtDate .Text , "M/d/yyyy", null);
rtbl.LoadRoomTypes(_ds, SessionContext.PropertyID,dat);
dlDashBoard.DataSource = _ds.Tables[rtbl.SqlEntityX];
dlDashBoard.DataBind();
foreach(DataListItem item in dlDashBoard .Items )
{
BindNestedItem(item.ItemIndex );
}
_ds = null;
RoomTypeBAL rtbl1 = new RoomTypeBAL(0);
rtbl1.LoadTotalFree(_ds3, SessionContext.PropertyID, dat);
if(_ds3 !=null && _ds3.Tables[rtbl1 .SqlEntityX ].Rows.Count >0)
this.DataBind();//Problem is here binding _ds always but I want to bind _ds3
}
我的来源是这样的:
<table>
<tr>
<td>
<asp:Label ID="Label1" runat="server" Text="FreeRooms :"></asp:Label>
</td>
<td>
<asp:Label ID="lblfreeRoom1" runat="server" Text='<%# _ds3.Tables[0].Rows[0]["tfreeroom1"].ToString() %>'></asp:Label>
</td>
<td>
<asp:Label ID="lblfreeRoom2" runat="server" Text='<%# _ds3.Tables[0].Rows[0]["tfreeroom2"].ToString() %>'></asp:Label>
</td>
<td>
<asp:Label ID="lblfreeRoom3" runat="server" Text='<%# _ds3.Tables[0].Rows[0]["tfreeroom3"].ToString() %>'></asp:Label>
</td>
<td>
<asp:Label ID="lblfreeRoom4" runat="server" Text='<%# _ds3.Tables[0].Rows[0]["tfreeroom4"].ToString()%>'></asp:Label>
</td>
<td>
<asp:Label ID="lblfreeRoom5" runat="server" Text='<%#_ds3.Tables[0].Rows[0]["tfreeroom5"].ToString() %>'></asp:Label>
</td>
<td>
<asp:Label ID="lblfreeRoom6" runat="server" Text='<%# _ds3.Tables[0].Rows[0]["tfreeroom6"].ToString() %>'></asp:Label>
</td>
<td>
<asp:Label ID="Label2" runat="server" Text='<%# _ds3.Tables[0].Rows[0]["tfreeroom7"].ToString() %>'></asp:Label>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label3" runat="server" Text="Arrivals :"></asp:Label>
</td>
<td>
<asp:Label ID="Label4" runat="server" Text='<%# _ds3.Tables[0].Rows[0]["tarrival1"].ToString() %>'></asp:Label>
</td>
<td>
<asp:Label ID="Label5" runat="server" Text='<%# _ds3.Tables[0].Rows[0]["tarrival2"].ToString() %>'></asp:Label>
</td>
<td>
<asp:Label ID="Label6" runat="server" Text='<%# _ds3.Tables[0].Rows[0]["tarrival3"].ToString() %>'></asp:Label>
</td>
<td>
<asp:Label ID="Label7" runat="server" Text='<%# _ds3.Tables[0].Rows[0]["tarrival4"].ToString() %>'></asp:Label>
</td>
<td>
<asp:Label ID="Label8" runat="server" Text='<%# _ds3.Tables[0].Rows[0]["tarrival5"].ToString() %>'></asp:Label>
</td>
<td>
<asp:Label ID="Label9" runat="server" Text='<%# _ds3.Tables[0].Rows[0]["tarrival6"].ToString() %>'></asp:Label>
</td>
<td>
<asp:Label ID="Label10" runat="server" Text='<%# _ds3.Tables[0].Rows[0]["tarrival7"].ToString() %>'></asp:Label>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label11" runat="server" Text="CheckOuts :"></asp:Label>
</td>
<td>
<asp:Label ID="Label12" runat="server" Text='<%# _ds3.Tables[0].Rows[0]["tcheckout1"].ToString()%>'></asp:Label>
</td>
<td>
<asp:Label ID="Label13" runat="server" Text='<%# _ds3.Tables[0].Rows[0]["tcheckout2"].ToString() %>'></asp:Label>
</td>
<td>
<asp:Label ID="Label14" runat="server" Text='<%# _ds3.Tables[0].Rows[0]["tcheckout3"].ToString() %>'></asp:Label>
</td>
<td>
<asp:Label ID="Label15" runat="server" Text='<%# _ds3.Tables[0].Rows[0]["tcheckout4"].ToString() %>'></asp:Label>
</td>
<td>
<asp:Label ID="Label16" runat="server" Text='<%# _ds3.Tables[0].Rows[0]["tcheckout5"].ToString() %>'></asp:Label>
</td>
<td>
<asp:Label ID="Label17" runat="server" Text='<%# _ds3.Tables[0].Rows[0]["tcheckout6"].ToString() %>'></asp:Label>
</td>
<td>
<asp:Label ID="Label18" runat="server" Text='<%# _ds3.Tables[0].Rows[0]["tcheckout7"].ToString() %>'></asp:Label>
</td>
</tr>
</table>
你好,我相信你需要重置你的数据源,this.DataBind()被引用回ds_
if(_ds3 !=null && _ds3.Tables[rtbl1 .SqlEntityX ].Rows.Count >0)
dlDashBoard.DataSource = _ds3.Tables[rtbl.SqlEntityX];
dlDashBoard.DataBind();
首先,我真的建议你切换到gridview,而不是使用有很多内联标签的表,这真的很难管理。你可以有相同的功能和很多使用GridView控件,而不是手工做。
对于你的问题-你需要在做DataBind()之前设置DataSource。如果你不告诉类,它怎么知道要绑定到哪个源?
我明白了,我必须将_ds3声明为public