1

こんにちは。

次のようなフィールドを持つ単純なグリッドビューがあります。

<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 に送信される値はラベルの新しい値ではありません。ブラウザに表示される値は、ラベルが最後にデータバインドされたときの値です。

これは、サーバーが挿入コマンドを実行したときに、クライアントが何を表示しているのかを認識できないためだと最初は考えていましたが、ラベルをテキストボックスに変更してすべてのコードをそのままにしておくと、データベースに送信される値は、クライアントに表示される値です。

この場合、挿入メソッドがラベルとテキストボックスのクライアント側のコンテンツを異なる方法で処理する理由を誰かが説明できますか?

そして、これは一般的に、クライアント側で値を変更してデータベースに送信したい場合、常にテキストボックスを使用する必要があるということですか?

ありがとうございました。

4

2 に答える 2

1

さらに調査した結果、この投稿https://stackoverflow.com/a/10324721/1266732を見つけました。これは、ラベルが値を Web サーバーに戻さないことを説明しているため、テキストボックスを使用してラベルとしてスタイリングすることをお勧めします。この目的のために。

于 2013-02-11T16:21:01.433 に答える
0

<input />技術レベルでは、要素または Cookieを使用してフォームの値が送信されます。JavaScript が<input />要素または Cookie を編集していない (または何らかの方法で GET URL を変更していない) 場合、値はサーバーに送信されません。

于 2013-02-11T16:19:11.363 に答える