You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
4.1 KiB
C#
125 lines
4.1 KiB
C#
using System;
|
|
using System.Web.UI;
|
|
using System.Web.UI.WebControls;
|
|
using System.ComponentModel;
|
|
using System.Globalization;
|
|
|
|
|
|
namespace HuizhongLibrary.Control
|
|
{
|
|
|
|
[DefaultProperty("Value"),
|
|
ToolboxData("<{0}:DataGridRadioButton runat=server></{0}:DataGridRadioButton>"),ParseChildren(true),
|
|
PersistChildren(false)]
|
|
public class DataGridRadioButton : RadioButton,INamingContainer,IPostBackDataHandler
|
|
{
|
|
public DataGridRadioButton() : base()
|
|
{
|
|
this.PreRender +=new EventHandler(DataGridRadioButton_PreRender);
|
|
}
|
|
|
|
private void DataGridRadioButton_PreRender(object sender, EventArgs e)
|
|
{
|
|
// Page.RegisterHiddenField("RadioButton_Checked", this.Checked.ToString());
|
|
// Page.RegisterStartupScript("jsSetRadioButton_Checked", "<script type=\"text/javascript\">document.getElementById("+this.ClientID+").Checked=" + this.Checked.ToString() + ";</script>");
|
|
// this.Attributes.Add("onclick","document.getElementById('RadioButton_Checked').value = this.Checked;");
|
|
// 将控件注册为要求在页回发至服务器时进行回发处理的控件
|
|
if (Page != null) Page.RegisterRequiresPostBack(this);
|
|
}
|
|
|
|
#region Properties
|
|
|
|
private string Value
|
|
{
|
|
get
|
|
{
|
|
string val = Attributes["value"];
|
|
if(val == null)
|
|
val = UniqueID;
|
|
else
|
|
val = UniqueID + "_" + val;
|
|
return val;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Rendering
|
|
|
|
protected override void Render(HtmlTextWriter output)
|
|
{
|
|
RenderInputTag(output);
|
|
|
|
}
|
|
|
|
private void RenderInputTag(HtmlTextWriter htw)
|
|
{
|
|
htw.AddAttribute(HtmlTextWriterAttribute.Id, ClientID);
|
|
htw.AddAttribute(HtmlTextWriterAttribute.Type, "radio");
|
|
htw.AddAttribute(HtmlTextWriterAttribute.Name, GroupName);
|
|
htw.AddAttribute(HtmlTextWriterAttribute.Value, Value);
|
|
if(Checked)
|
|
htw.AddAttribute(HtmlTextWriterAttribute.Checked, "checked");
|
|
if(!Enabled)
|
|
htw.AddAttribute(HtmlTextWriterAttribute.Disabled, "disabled");
|
|
|
|
string onClick = Attributes["onclick"];
|
|
if(AutoPostBack)
|
|
{
|
|
if(onClick != null)
|
|
onClick = String.Empty;
|
|
onClick += Page.GetPostBackClientEvent(this, String.Empty);
|
|
htw.AddAttribute(HtmlTextWriterAttribute.Onclick, onClick);
|
|
htw.AddAttribute("language", "javascript");
|
|
}
|
|
else
|
|
{
|
|
if(onClick != null)
|
|
htw.AddAttribute(HtmlTextWriterAttribute.Onclick, onClick);
|
|
}
|
|
|
|
if(AccessKey.Length > 0)
|
|
htw.AddAttribute(HtmlTextWriterAttribute.Accesskey, AccessKey);
|
|
if(TabIndex != 0)
|
|
htw.AddAttribute(HtmlTextWriterAttribute.Tabindex,
|
|
TabIndex.ToString(NumberFormatInfo.InvariantInfo));
|
|
htw.RenderBeginTag(HtmlTextWriterTag.Input);
|
|
htw.RenderEndTag();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region IPostBackDataHandler Members
|
|
|
|
void IPostBackDataHandler.RaisePostDataChangedEvent()
|
|
{
|
|
OnCheckedChanged(EventArgs.Empty);
|
|
}
|
|
|
|
bool IPostBackDataHandler.LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection)
|
|
{
|
|
bool result = false;
|
|
string value = postCollection[GroupName];
|
|
if((value != null) && (value == Value))
|
|
{
|
|
if(!Checked)
|
|
{
|
|
Checked = true;
|
|
result = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(Checked)
|
|
Checked = false;
|
|
}
|
|
// if (postCollection["RadioButton_Checked"]!=null)this.Checked=Convert.ToBoolean(postCollection["RadioButton_Checked"]);
|
|
return result;
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
}
|
|
}
|