2014-09-11 51 views
0

我需要將radgrid指向在下拉列表中選定的表。所以我有調用Rebind()的dropdownList的selectedIndexChanged事件,該事件應該在設置數據源命令的地方觸發radgrid NeedDataSource事件。但它不會開火!以編程方式更改Radgrid中的表 - NeedDataSource不會在Rebind上觸發()

protected void DropDownList1_SelectedIndexChanged1(object sender, EventArgs e) 
{ 
    if (DropDownList1.SelectedIndex > -1) 
    { 
     RadGrid1.DataSource=null; 
     Label1.Text = DropDownList1.SelectedItem.Text; //just for debugging 
     RadGrid1.Rebind(); 

    } 
} 

protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e) 
{ 
    string tableInUse = DropDownList1.SelectedItem.Text; 
    Label2.Text = "NeedDataSource has been fired"; //just for debugging 
    RadGrid1.DataSource = SqlDataSource1; 
    SqlDataSource1.DeleteCommand = "DELETE FROM [" + tableInUse + "] ....."; 
    SqlDataSource1.SelectCommand = "SELECT * FROM [" + tableInUse + "] ORDER BY [Code]"; 
    SqlDataSource1.UpdateCommand = "UPDATE [" + tableInUse + "] SET ...."; 

} 

和標記:

<telerik:RadGrid ID="RadGrid1" runat="server" Culture="it-IT" DataSourceID="SqlDataSource1" OnNeedDataSource="RadGrid1_NeedDataSource"> 
      <MasterTableView DataSourceID="SqlDataSource1"> 
      </MasterTableView> 
     </telerik:RadGrid> 

不知道這是改變關聯到radgrid控件但至少NeedDatasource事件數據庫表的正確方法應該被解僱。我究竟做錯了什麼?

回答

1

您不應該同時設置DataSourceID和DataSource參數;它不會觸發,因爲它有一個DataSourceID設置爲數據源控件,並從中獲取所需的內容。你也必須清除它。但是相反,對數據源上的事件做出反應並且從那裏改變你想要的(選擇,更新等)可能是有意義的。

+0

多數民衆贊成在輝煌!感謝您的建議。你絕對正確。這解決了我的問題。 – FeliceM 2014-09-11 14:02:32

相關問題