Telerik的RadGrid控件简单使用

Telerik公司的.NET控件功能强大、界面美观、使用方便。在一个项目中使用了这个控件,感觉不错。下面是一个使用RadGrid的例子。从例子中可以看出,RadGrid与.NET标准控件GridView很类似,但也有不少细节不同,而且参数选项比GridView更加复杂(因为功能更多了)。

    <form id="form1" runat="server">
<div>
<telerik:RadScriptManager Runat="server">
</telerik:RadScriptManager>
<telerik:RadInputManager ID="RadInputManager1" runat="server">
</telerik:RadInputManager>
<telerik:RadFormDecorator ID="RadFormDecorator1" runat="server" />
<telerik:RadGrid ID="RadGrid1" runat="server" AllowAutomaticInserts="true"
AllowAutomaticUpdates
="true" onneeddatasource="RadGrid1_NeedDataSource"
GridLines
="None" AllowPaging="true" onitemupdated="RadGrid1_ItemUpdated" >
<MasterTableView AutoGenerateColumns="False" DataKeyNames="Id" CommandItemDisplay="Top" >
<CommandItemSettings AddNewRecordText="添加" RefreshText="刷新" ></CommandItemSettings>
<Columns>
<telerik:GridEditCommandColumn ButtonType="ImageButton" />
<telerik:GridBoundColumn DataField="Id" HeaderText="Id" />
<telerik:GridBoundColumn DataField="Price" HeaderText="Value" DataFormatString="{0:C}" />
<telerik:GridBoundColumn DataField="Text" HeaderText="Text" />
</Columns>
</MasterTableView>
</telerik:RadGrid>
</div>
<div>
<asp:Label runat="server" ID="output" />
</div>
</form>

在上述代码中,为RadGrid控件的NeedDataSource事件指定了一个事件处理程序。顾名思义,当RadGrid需要数据源时(如翻页、绑定)就会触发此事件。在此事件中通过编写代码绑定数据源,如下代码所示。

protected void RadGrid1_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
buildTestData();
RadGrid1.DataSource
= data;
}
//Grid所使用的数据源
List<TestClass> data = new List<TestClass>();
/// <summary>
/// 随机生成数据源
/// </summary>
private void buildTestData()
{
if (data.Count > 0) return; //如果已经生成过则不再生成
string alphbet = "abcdefghijklmnopqrstuvwxyz0123456789";
Random r
= new Random();
for (int i = 0; i < 80; i++)
{
TestClass t
= new TestClass();
t.Id
= i;
t.Price
= r.NextDouble() * 100000000;
StringBuilder sb
= new StringBuilder();
int len = r.Next(15);
for (int j = 0; j < len; j++)
{
sb.Append(alphbet[r.Next(alphbet.Length)]);
}
t.Text
= sb.ToString();
data.Add(t);
}
}
/// <summary>
/// 测试用的数据类
/// </summary>
private class TestClass
{
public int Id { get; set; }
public double Price { get; set; }
public string Text { get; set; }
}

如何实现数据更新呢?可以在RadGrid控件的UpdateCommand中编写代码,如下所示。

protected void RadGrid1_UpdateCommand(object source, GridCommandEventArgs e)
{
//获取正在编辑的用户输入的价格文字
string s = ((e.Item.OwnerTableView.Items[RadGrid1.EditIndexes[0]]["Price"].Controls[0]) as TextBox).Text;
//这里可以写代码,完成自定义的数据更新逻辑。为演示目的,此处仅显示一个文字提示。
output.Text += string.Format("RadGrid1_UpdateCommand:Row{1}, CellText:{0}<br/> ",s,e.Item.RowIndex);
}

运行结果如下图所示。

版权所有:基础软件工作室。作者:孙继磊。邮箱:sun.j.l.studio@gmail.com。
本文首发于 http://www.cnblogs.com/FoundationSoft。文章转载请保持此版权信息并注明出处。

posted @ 2011-07-24 13:29  基础软件  阅读(18956)  评论(6编辑  收藏  举报