SqlDataSourceとGridViewでUpdateCommandを使用したいと思います。
updateコマンドはSQLを使用します:
Update yourTable SET columnName = 'yourValue';
Update MainAsset Set site ='http://stackoverflow.com';
msdnの例では、データベースの列(フィールド)がgridview1にバインドされています。BoundFieldの値は、DataFieldの値に@を付けて渡すことができます。データベース列のLastNameはグリッド列にバインドさ<asp:BoundField HeaderText="Last Name" DataField="LastName" />
れ、更新コマンドで@LastNameを使用して値を渡します。
<asp:SqlDataSource
id="SqlDataSource1"
runat="server"
DataSourceMode="DataSet"
ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
SelectCommand="SELECT EmployeeID,FirstName,LastName,Title FROM Employees"
UpdateCommand="Update Employees SET
FirstName=@FirstName,LastName=@LastName,
Title=@Title WHERE EmployeeID=@EmployeeID"
OnUpdated="OnDSUpdatedHandler">
</asp:SqlDataSource>
<asp:GridView
id="GridView1"
runat="server"
AutoGenerateColumns="False"
DataKeyNames="EmployeeID"
AutoGenerateEditButton="True"
DataSourceID="SqlDataSource1">
<columns>
<asp:BoundField HeaderText="First Name" DataField="FirstName" />
<asp:BoundField HeaderText="Last Name" DataField="LastName" />
<asp:BoundField HeaderText="Title" DataField="Title" />
</columns>
</asp:GridView>
コメントに対応するために更新
さまざまSelect * from Dbo.MainAsset, dbo.Model ...
なテーブルからデータをロードし、それらを1つの大きなテーブルとして表示します。これは結合と呼ばれます。Selectは、新しい構文ではなく、古い結合構文を使用します
あなたのコメントを理解できるかどうかはわかりません。「構文がUpdateCommandをどのように検索するかを尋ねています。」更新では、3つのテーブルすべて(MainAsset、Model、およびHardware)の値を更新しますか?この場合、グリッドに表示される単一の列を知る必要があります。この質問またはこの更新結合の説明を参照して、結合による更新をよりよく理解することができます。
UpdateCommandのUpdate2構文
- カスタムUpdateCommandを作成するにはどうすればよいですか?
- 「MainAsset.site」など、1つの列を更新するにはどうすればよいですか。
- ドロップダウンリストが変更された場合にレコードを更新するにはどうすればよいですか?
まず、SQLServerの通常の更新ステートメントがどのように見えるかを知る必要があります。
UPDATE MainAsset
SET site= NewValueForSite
,teacher = 'Dr. Seuss'
WHERE rowId = FilterValue
カスタム更新コマンドを作成するには、必要なSQLを記述し、それをSqlDataSourceのプロパティUpdateCommandに割り当てる/渡します。次のようにすることができます(pkが主キーを表し、行を識別すると仮定します)。
<asp:SqlDataSource
id="SqlDataSource1"
// ... see above
UpdateCommand="Update MainAsset SET
site=@site
,teacher=@teacher,
WHERE pk=@pk"
OnUpdated="OnDSUpdatedHandler">
</asp:SqlDataSource>
あなたの3番目の質問に関して私はあなたにこの質問を指摘したいと思います:
<asp:DropDownList ID="ddlSite" runat="server"
AutoPostBack="True"
OnSelectedIndexChanged="SelectionHasChanged"
DataSourceID="SqlDataSource1" DataTextField="site"
DataValueField="pk" AppendDataBoundItems="true">