2016-08-23 3 views
0

SqlDataSourceで宣言的にRadGridを作成しようとしていますが、Gridからサーバー側のデータベースレコードでも更新する必要があります。DataSourceとDataSourceIDの両方が 'ctl00'で定義されています。定義を削除します

サンプルコードを以下に示します。

<asp:SqlDataSource ID="SqlDataSource1" runat="server" SelectCommand="spSelect" SelectCommandType="StoredProcedure" ConnectionString="<%$ ConnectionStrings:iTomsConnectionString %>"> 
     <SelectParameters> 
      <asp:SessionParameter Name="Id" SessionField="Id" Type="Int32" /> 
      <asp:SessionParameter Name="Name" SessionField="Name" Type="String" /> 
     </SelectParameters> 
    </asp:SqlDataSource> 

    <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> 
    </telerik:RadScriptManager> 
    <telerik:RadGrid ID="grvUpdate" runat="server" GridLines="Horizontal" 
     CellPadding="0" BorderWidth="0px" EnableEmbeddedSkins="False" Skin="skn_RadGrid" 
     SkinsDir="|CurrentTheme|/" SkinsPath="|CurrentTheme|/" 
     Width="382px" CellSpacing="0"> 
     <MasterTableView 
      AllowPaging="true" 
      PageSize="15" 
      EditMode="PopUp" 
      CommandItemDisplay="Top" 
      AllowFilteringByColumn="false" DataSourceID="SqlDataSource1" AutoGenerateColumns="False" DataKeyNames="Id"> 

      <Columns> 
       <telerik:GridBoundColumn DataField="Id" DataType="System.Int64" FilterControlAltText="Filter Id column" HeaderText="Id" ReadOnly="True" SortExpression="Id" UniqueName="Id"> 
       </telerik:GridBoundColumn> 
       <telerik:GridBoundColumn DataField="Name" HeaderText="Name" SortExpression="Name" UniqueName="Name"> 
       </telerik:GridBoundColumn> 
     <telerik:GridBoundColumn DataField="Amount" HeaderText="Amount" SortExpression="Amount" UniqueName="Amount"> 
       </telerik:GridBoundColumn>     
       <telerik:GridButtonColumn DataTextField="Reject" HeaderText="Reject" SortExpression="Reject" Text="Reject Button" UniqueName="Reject" CommandName="Reject"></telerik:GridButtonColumn> 
      </Columns> 

      <EditFormSettings> 
       <EditColumn InsertImageUrl="Update.gif" UpdateImageUrl="Update.gif" CancelImageUrl="Cancel.gif"></EditColumn> 
      </EditFormSettings> 
     </MasterTableView> 


    </telerik:RadGrid> 

私はどのようにASP.Net Serverのコードでは、このクエリのタイトルで述べたように、エラーなしでデータバインドを行うだけでなく、SqlDataSourceコントロールがレコードを削除/ /更新を取得するために持つことができますか?

をPage_Loadでサーバー側のコードは、それを行うには2つの方法があります

grvUpdate.DataSource = ds.Tables[0]; 
grvUpdate.DataBind(); 
+0

エラーメッセージのように聞こえますが、どちらか一方を削除してください。 – MethodMan

答えて

0

両方のメソッドを同時に実装する必要があります。そしてその解決策を以下に示します。

grvUpdate.DataSource = ds.Tables[0]; 
grvUpdate.DataSourceID = String.Empty; 
grvUpdate.DataBind(); 
1

以下の通りである

  1. 、プロパティにDataSourceIDを、あなたのデータソースコントロールIDを割り当てるあなたのケースでいますDataSourceID = "SqlDataSource1"である必要があります。このアプローチでは、宣言型データソースコントロールを使用して、データをグリッドに宣言的にバインドします。

  2. NeedDataSourceイベントを追加し、あなたのケースでは、この

方法1

<asp:SqlDataSource ID="SqlDataSource1" runat="server" SelectCommand="spSelect" SelectCommandType="StoredProcedure" ConnectionString="<%$ ConnectionStrings:iTomsConnectionString %>"> 
     <SelectParameters> 
      <asp:SessionParameter Name="Id" SessionField="Id" Type="Int32" /> 
      <asp:SessionParameter Name="Name" SessionField="Name" Type="String" /> 
     </SelectParameters> 
</asp:SqlDataSource> 

<telerik:RadGrid ID="grvUpdate" runat="server" DataSourceID="SqlDataSource1"> 
    //... 
</telerik:RadGrid> 

のように行われるべきである、背後にあるコード内のデータソースを割り当てる(余分なコーディングは必要ありません)方法2

<telerik:RadGrid ID="grvUpdate" runat="server" OnNeedDataSource="grvUpdate_NeedDataSource"> 
    //... 
</telerik:RadGrid> 

protected void grvUpdate_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e) 
{ 
    grvUpdate.DataSource = ds.Tables[0]; // assume ds already exists in the scope 
} 

詳細については、このドキュメントを参照してください。 RadGridのデータバインディングの詳細: http://docs.telerik.com/devtools/aspnet-ajax/controls/grid/data-binding/understanding-data-binding/telerik-radgrid-data-binding-basics

関連する問題