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> 

방법뿐만 아니라의 SqlDataSource가/업데이트를 검색 할 가지고 ASP.Net 서버 코드에서이 쿼리의 제목에서 언급 한 바와 같이 나는 오류없이 데이터 바인딩을 수행 할 수/기록을 삭제 하시겠습니까?

를 Page_Load의 서버 측 코드는 그것을 할 수있는 두 가지 방법이 있습니다

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