手机
当前位置:查字典教程网 >编程开发 >asp.net教程 >asp.net 扩展GridView 增加单选按钮列的代码
asp.net 扩展GridView 增加单选按钮列的代码
摘要:复制代码代码如下://////单选按钮列/////////如果没有设置GroupName,则使用GridView的ID作为GroupName...

复制代码 代码如下:

/// <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.net 生成曲线图实现代码

asp.net(c#)利用构造器链的代码

asp.net 无重复随机数代码

asp.net Gridview里添加汇总行

asp.net GridView 中增加记录的方法

asp.net下定制日期输出格式的代码

asp.net DiscuzNT登录,退出的代码

asp.net DataGridView导出到Excel的三个方法[亲测]

asp.net cookie清除的代码

GridView生成的HTML代码

精品推荐
分类导航