下午好。
我有一个简单的gridview,其中包含这样的字段:
<asp:TemplateField HeaderText="USD Full Load Machine">
<ItemTemplate>
<asp:Label ID="lblUSDFullLoad" runat="server" Text='<%# Bind("USDFullyLoadMachine") %>' />
</ItemTemplate>
</asp:TemplateField>
InsertCommand 和 Insertparameters 设置如下:
<asp:SqlDataSource (code omitted)
InsertCommand="Insert Into [xxxxTable]
([SubmissionID],USDFullyLoadMachine]) Values(@newSubID,@usdflm)">
<InsertParameters>
<asp:ControlParameter Name="newSubID" ControlID="lblNewSubmissionID" />
<asp:ControlParameter Name="usdflm" ControlID="gridConversionTotals$ctl02$lblUSDFullLoad" />
</InsertParameters>
</asp:SqlDataSource>
当我使用客户端javascript更改gridConversionTotals$ctl02$lblUSDFullLoad标签的文本,并在后面的代码中对sql数据源控件执行插入方法时,发送到SQL的值不是标签的新值,即不是浏览器上显示的值,它是标签上次数据绑定时的值。
我最初认为这是因为服务器在执行插入命令时不可能知道客户端显示的内容,但事实并非如此,因为如果我将标签更改为文本框并保留所有代码不变,发送到数据库的值确实是客户端上显示的值。
有人可以解释一下为什么在这种情况下插入方法会以不同的方式处理标签和文本框的客户端内容吗?
这是否意味着通常当我想在客户端更改值然后将它们发送到数据库时,我需要始终使用文本框?
谢谢你。