时间:2016-02-15 22:58 来源: 我爱IT技术网 作者:佚名
欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【asp.net 扩展GridView 增加单选按钮列的代码】,下面是详细的讲解!
asp.net 扩展GridView 增加单选按钮列的代码
/// <summary>
/// 单选按钮列
/// </summary>
/// <remarks>
/// 如果没有设置GroupName,则使用GridView的ID作为GroupName
/// 如果没有设置DataField,则使用RowIndex作为Value
/// 允许设置DataFormatString格式化数据
/// </remarks>
[AspNetHostingPermission(SecurityAction.Demand,
Level=AspNetHostingPermissionLevel.Minimal)]
public class RadioButtonSelectField : DataControlField
{
/// <summary>
/// 单选按钮组名,默认去GridView的ClientID
/// </summary>
[Description("单选按钮组名,默认去GridView的ClientID")]
public string RadioButtonGroupName
{
get
{
return this.ViewState["RadioButtonGroupName"] as string;
}
set
{
this.ViewState["RadioButtonGroupName"]=value;
}
}
/// <summary>
/// 单选按钮的样式
/// </summary>
[Description("单选按钮的样式")]
public string RadioButtonCssClass
{
get
{
return this.ViewState["RadioButtonCssClass"] as string;
}
set
{
this.ViewState["RadioButtonCssClass"]=value;
}
}
/// <summary>
/// 要绑定的数据表达式
/// </summary>
[Description("要绑定的数据表达式")]
public string DataField
{
get
{
return this.ViewState["DataField"] as string;
}
set
{
this.ViewState["DataField"]=value;
}
}
/// <summary>
/// 要绑定的数据表达式格式
/// </summary>
[Description("要绑定的数据表达式格式")]
public string DataFormatString
{
get
{
return this.ViewState["DataFormatString"] as string;
}
set
{
this.ViewState["DataFormatString"]=value;
}
}
/// <summary>
/// return self;
/// </summary>
/// <returns></returns>
protected override DataControlField CreateField()
{
return this;
}
/// <summary>
/// 添加控件
/// </summary>
/// <param name="cell"></param>
/// <param name="cellType"></param>
/// <param name="rowState"></param>
/// <param name="rowIndex"></param>
public override void InitializeCell(DataControlFieldCell cell, DataControlCellType cellType, DataControlRowState rowState, int rowIndex)
{
base.InitializeCell(cell, cellType, rowState, rowIndex);
if (cellType==DataControlCellType.DataCell)
{
var literal=new Literal();
if (string.IsNullOrEmpty(this.DataField))
{
SetLiteralHtml(literal, rowIndex.ToString());
}
else
{
literal.DataBinding +=new EventHandler(literal_DataBinding);
}
cell.Controls.Add(literal);
}
}
void literal_DataBinding(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(this.DataField))
{
return;
}
var literal=sender as Literal;
if (literal==null)
{
return;
}
var cell=literal.Parent as TableCell;
if (cell==null)
{
return;
}
var container=literal.NamingContainer;
if (container==null)
{
return;
}
bool foundDataItem;
var dataItem=DataBinder.GetDataItem(container, out foundDataItem);
if (!foundDataItem)
{
return;
}
var dataValue=null as string;
if (this.DataField.Contains('.'))
{
dataValue=DataBinder.Eval(dataItem, this.DataField, this.DataFormatString);
}
else
{
dataValue=DataBinder.GetPropertyValue(dataItem, this.DataField, this.DataFormatString);
}
SetLiteralHtml(literal, dataValue);
}
private void SetLiteralHtml(Literal literal, string dataValue)
{
var groupName=this.RadioButtonGroupName;
if (string.IsNullOrEmpty(groupName))
{
groupName=literal.Parent.Parent.Parent.Parent.ID;
}
var cssClass=this.RadioButtonCssClass;
if (!string.IsNullOrEmpty(cssClass))
{
cssClass=string.Format("class=\"{0}\"", this.RadioButtonCssClass);
}
var selected=false;
var selectedValue=literal.Page.Request[groupName];
if (string.IsNullOrEmpty(selectedValue)==false)
{
if (string.Compare(selectedValue, dataValue, true)==0)
{
selected=true;
}
}
var rbHtml=string.Format("<input type=\"radio\" name=\"{0}\" value=\"{1}\" {2} {3} />",
groupName,
dataValue,
cssClass,
selected ? "checked" : string.Empty);
literal.Text=rbHtml;
}
}
关于asp.net 扩展GridView 增加单选按钮列的代码的用户互动如下:
相关问题:
答: >>详细
相关问题:
答: >>详细
相关问题:
答: >>详细
- 【asp】asp.net url重写浅谈-net-url重写
- 【DataSet】DataSet、DataTable、DataRow区别详解
- 【asp】asp.net 动态添加多个用户控件-net-动态添
- 【创建】ASP.NET Web API教程 创建域模型的方法详
- 【Asp】Asp.net 页面调用javascript变量的值-net-
- 【asp】asp.net ubb使用代码-net-ubb使用
- 【默认图片】图片不存在使用默认图片代替的实例
- 【asp】asp.net 页面转向 Response.Redirect Ser
- 【jQuery】jQuery实现倒计时跳转的例子-倒计时跳
- 【记住】ASP.NET记住登陆用户名的具体实现-登陆-
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
