数据绑定在文本框和标签上的行为方式不同

时间:2011-05-06 15:56:15

标签: asp.net data-binding c#-4.0

我有一个数据库,其中一行在“noteText”列中有“TEXTTEXT”,而在该列中有null用于不同的行。如果我运行生成1行的查询,则运行具有2行的其他查询,Eval("noteText")在放置在TextBoxLabel中时返回不同的信息。 TextBoxLabel专为此测试而创建;它没有在代码隐藏中引用。我认为第二个查询的第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调用都显示一个空字符串。

1 个答案:

答案 0 :(得分:0)

我们通过添加对DataBind的更多来电来修复它。

目前的理论是单击按钮查询数据库时提交了TextBoxDataBind发生后,Asp.Net使用提交的数据重新填充TextBoxTextBox现在在逻辑上对应于数据库中的不同行,但与上一页面视图中的TextBox位于同一位置,因此具有相同的ClientID

这种怀疑的一个原因是帖子引发OnTextChanged事件。

我仍然对此不满意;我并不完全相信我知道发生了什么,即使它现在正在发挥作用。