我需要将一个radgrid指向下拉列表中选择的表。所以我有dropdownList的selectedIndexChanged事件调用Rebind(),它应该触发radgrid NeedDataSource事件,我在其中设置datasource命令。但它不会开火!
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事件。我究竟做错了什么?
答案 0 :(得分:1)
您不应该同时设置DataSourceID和DataSource参数;它没有触发,因为它有一个DataSourceID设置为数据源控件,只是从那里得到它需要的东西。你也必须清楚这一点。但相反,对数据源上的事件做出反应并从那里改变你想要的东西(选择,更新等)可能是有意义的。