我有一个数据库,其中一行在“noteText”列中有“TEXTTEXT”,而在该列中有null
用于不同的行。如果我运行生成1行的查询,则运行具有2行的其他查询,Eval("noteText")
在放置在TextBox
与Label
中时返回不同的信息。 TextBox
和Label
专为此测试而创建;它没有在代码隐藏中引用。我认为第二个查询的第1行的TextBox
是拉动第一个查询的第1行中使用的数据。
我不认为这可能是与浏览器相关的问题,因为返回页面的源代码本身不正确。
Aspx文件代码:
<asp:TemplateField HeaderText ="Notes" SortExpression="noteid">
<ItemTemplate>
STARTXX
<asp:TextBox ID="AtxtNote" ViewStateMode="Disabled" runat="server"
TextMode= "SingleLine" Width="260" Text='<%# Eval("noteText") %>' />
<br />
<asp:Label ID="BtxtNote" runat="server" Width="260"
Text='<%# Eval("noteText") %>' />
<br />
ENDXX
</ItemTemplate>
</asp:TemplateField>
页面上的源代码:
STARTXX
<input name="ctl00$CPH1$gv$ctl02$AtxtNote" type="text"
value="TEXTTEXT" id="ctl00_ContentPlaceHolder1_gv_ctl02_AtxtNote"
style="width:260px;" />
<br />
<span id="ctl00_CPH1_gv_ctl02_BtxtNote"
style="display:inline-block;width:260px;"></span><br />
ENDXX
实际间距有点不同;我编辑了源代码和输出代码的文本以防止水平滚动。
我希望两个Eval
调用都显示一个空字符串。
答案 0 :(得分:0)
我们通过添加对DataBind
的更多来电来修复它。
目前的理论是单击按钮查询数据库时提交了TextBox
。 DataBind
发生后,Asp.Net使用提交的数据重新填充TextBox
。 TextBox
现在在逻辑上对应于数据库中的不同行,但与上一页面视图中的TextBox
位于同一位置,因此具有相同的ClientID
。
这种怀疑的一个原因是帖子引发OnTextChanged
事件。
我仍然对此不满意;我并不完全相信我知道发生了什么,即使它现在正在发挥作用。