RadGrid是从服务器端使用模板字段生成的。 NeedDataSource ()是用于数据绑定的。在每次回发时,RadGrid都会丢失值,因为没有调用NeedDataSource。手动在 Onload ()上执行 Rebind ()也无济于事。
网格结构在 OnLoad ()中定义并执行一次! IsPostback ()
我记得在某处读取当从服务器端动态构建Grid结构时,网格'需要'在每次回发时都是Rebind()。
RadGrid不会在回发时维护这些值吗?这与ViewState有关吗?
答案 0 :(得分:2)
“NeedDataSource”事件也应该在回发上发生。您可以尝试使用RadAjaxManager设置页面。您的网格是否在第一次加载时加载数据?尝试按照他们在网格上设置的演示页面,作为设置它们的不同方法的最佳示例之一。
http://demos.telerik.com/aspnet-ajax/grid/examples/programming/simplebinding/defaultcs.aspx
答案 1 :(得分:1)
根据radgrid文档,如果以编程方式创建网格,则需要在OnInit方法中创建它: http://www.telerik.com/help/aspnet-ajax/grid-programmatic-creation.html(在Page_Init部分创建RadGrid) 当网格部分添加到标记中时,可以使用onLoad。 希望这会有所帮助。
答案 2 :(得分:0)
创建将数据绑定到Radgrid的函数
private void BindData()
{
//Get data from database
//DBData can be datatable or list
RadGrid1.DataSource = DBData;
}
然后调用页面加载事件
protected void Page_Load(object sender, EventArgs e)
{
try
{
if (!IsPostBack)
{
BindData();
}
}
catch (Exception ex)
{
}
}
然后你可以在NeedDataSource事件中使用相同的功能
protected void RadGrid_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
BindCommentData();
}