文本框未显示数据库更新的新文本值

时间:2015-03-05 17:57:07

标签: asp.net vb.net

我有文本框,我在首次加载页面时和数据库更新后加载数据库中的数据。这是一些代码。从vb代码隐藏:

Private Sub doLoad()
    Dim dvsqlClient As DataView
    dvsqlClient = CType(sqlClient.Select(DataSourceSelectArguments.Empty), DataView)
    toptxtCliName.Text = CType(dvsqlClient.Table.Rows(0)("ClientName"), String)
    txtCliName.Text = CType(dvsqlClient.Table.Rows(0)("ClientName"), String)
    '    load the rest of the textboxes
End Sub

保存输入数据后,此代码运行:

'    code that saves to database
'    show confirmation
ScriptManager.RegisterClientScriptBlock(Me, Me.GetType(), "generateSuccess", "generate('Client Saved.', 'success', 'center');", True)
'    load everything again
doLoad()

来自aspx页面:

<asp:Table runat="server" BackColor="LightGray" Width="100%">
<asp:TableRow BackColor="LightGray">
    <asp:TableCell>
        <asp:TextBox ID="toptxtCliName" Enabled="false" CssClass="big_textbox textbox-disabled" runat="server"></asp:TextBox>
    </asp:TableCell>
</asp:TableRow>
<asp:TableRow>
<asp:TableCell ColumnSpan="2">
<ajaxToolkit:TabContainer ID="TabContainer1" runat="server" TabStripPlacement="Top">
<ajaxToolkit:TabPanel runat="server" ID="ClientPanel" HeaderText="Client Info">
<ContentTemplate>
<asp:UpdatePanel ID="updatePanel1" runat="server">
<ContentTemplate>
<table>
<tr>
    <td class="right_column" colspan="5">
        <asp:TextBox ID="txtCliName" TabIndex="1" runat="server" CssClass="big_textbox"></asp:TextBox>
    </td>
</tr>
</table>
</ContentTemplate>
</asp:UpdatePanel>
</ContentTemplate>
</ajaxToolkit:TabPanel>
</ajaxToolkit:TabContainer>
</asp:TableCell>
</asp:TableRow>
</asp:Table>

我的数据源:

<asp:SqlDataSource ID="sqlClient" runat="server"
    ConnectionString='<%$ ConnectionStrings:xConnectionString %>'
    SelectCommand="SELECT ClientName
                     FROM view_Client
                    WHERE ClientCode = @ClientCode">
    <SelectParameters>
        <asp:QueryStringParameter QueryStringField="CLICODE" Name="ClientCode">
        </asp:QueryStringParameter>
    </SelectParameters>
</asp:SqlDataSource>

第一次通过,刷新后,两个文本框都显示相同的正确值。运行save sub并再次运行doLoad之后。 toptxtCliName.text仍保留以前的值,而txtCliName.text保存新值。当我在代码隐藏的框中放置一个断点时,代码显示两个文本框都填充了相同的文本。但是当窗口恢复时,只有txtCliName.text具有正确的值。如果我点击刷新,它们在页面加载完成后都具有正确的值。

据我所知,它的代码完全相同。任何人都能看到我失踪的东西吗?

它发生在我的两个页面上,结构与此相同。

1 个答案:

答案 0 :(得分:1)

在没有看到所有代码的情况下很难说100%,但我的猜测是你在ajax回调上击中了服务器,因此只能修改UpdatePanel中的内容。

根据您要完成的操作,

toptxtCliName需要位于UpdatePanel中。尝试将两个控件放在UpdatePanel中,看看是否有帮助。其他一些选择是使用两个UpdatePanel,或者可能将UpdatePanel移到更高位置,以便它在TableRow之前立即启动。