======
public class MyTemplate : ITemplate
{
private SWT.Components.DataTableColumnInfo _DTColumnInfo;
private ListItemCollection _ListItems;
public MyTemplate(SWT.Components.DataTableColumnInfo toColumnInfo,ListItemCollection taItems)
{
this._DTColumnInfo = toColumnInfo;
this._ListItems = taItems;
}
public void InstantiateIn(Control toContainer)
{
if (this._DTColumnInfo.ControlTypeName == "TextBox") {
string lcID = toContainer.ID;
lcID = toContainer.ClientID;
TextBox loEdtBox = new TextBox();
loEdtBox.ID = "edt" + this._DTColumnInfo.Name;
loEdtBox.EnableViewState = true;
loEdtBox.DataBinding += new EventHandler(this.OnDataBinding);
loEdtBox.Width = this._DTColumnInfo.Width;
toContainer.Controls.Add(loEdtBox);
if (this._DTColumnInfo.Type == "System.Int32") {
CompareValidator loCompareInteger = new CompareValidator();
loCompareInteger.ControlToValidate = loEdtBox.ID;
loCompareInteger.Operator = ValidationCompareOperator.DataTypeCheck;
loCompareInteger.Type = ValidationDataType.Integer;
loCompareInteger.ErrorMessage = "!";
toContainer.Controls.Add(loCompareInteger);
}
}
else if (this._DTColumnInfo.ControlTypeName == "DropDownList")
{
DropDownList loDDL = new DropDownList();
loDDL.ID = "ddl" + this._DTColumnInfo.Name;
loDDL.CssClass = "dropdown_default";
loDDL.EnableViewState = true;
foreach (ListItem loItem in this._ListItems) {
loDDL.Items.Add(loItem);
}
loDDL.DataBinding += new EventHandler(this.OnDataBinding);
toContainer.Controls.Add(loDDL);
}
else if (this._DTColumnInfo.ControlTypeName == "CheckBox")
{
CheckBox loChkBox = new CheckBox();
loChkBox.ID = "chk" + this._DTColumnInfo.Name;
loChkBox.EnableViewState = true;
loChkBox.DataBinding += new EventHandler(this.OnDataBinding);
toContainer.Controls.Add(loChkBox);
}
}
public void OnDataBinding(object sender, EventArgs e)
{
GridViewRow loContainer = (GridViewRow)((Control)sender).NamingContainer;
if (this._DTColumnInfo.ControlTypeName == "TextBox")
{
TextBox loEdtBox = (TextBox)sender;
loEdtBox.Text = ((DataRowView)loContainer.DataItem)[_DTColumnInfo.Name].ToString();
}
else if (this._DTColumnInfo.ControlTypeName == "DropDownList")
{
DropDownList loDDL = (DropDownList)sender;
ListItem loSelItem = loDDL.Items.FindByValue((((DataRowView)loContainer.DataItem)[_DTColumnInfo.Name].ToString()));
if (loSelItem != null)
{
loSelItem.Selected = true;
}
}
else if (this._DTColumnInfo.ControlTypeName == "CheckBox")
{
CheckBox loChkBox = (CheckBox)sender;
loChkBox.Checked = Convert.ToBoolean(((DataRowView)loContainer.DataItem)[_DTColumnInfo.Name].ToString());
}
}
}
==========
Page_Load如下:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack) {
fillGridView("add");//根据动态构造的DataTable(并非来自数据库),构建GridView列
addInitial();//对部分控件赋初始值
this.grdChapter.EnableViewState = true;//grdChapter为GridView控件
}
===========
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
问题一 :
如果将动态构建GridView列的“fillGridView()”放在“IsPostBack”里面,单击Button后,GridView中我自己定义的TextBox和DropDownList就没有了。为什么?
问题二:
为什么GridView.DataSource == null?
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
问题三:
我将“fillGridView()”拿到了“IsPostBack”外面,
页面上有一个Button,单击事件中读取Gridview中各单元值,GridView中每一行有edtQuestionNum(TextBox控件)和ddlQuestionType(DropDownList控件)示例代码如下,
foreach (GridViewRow loCurRow in this.grdChapter.Rows) {
if (loCurRow.RowType == DataControlRowType.DataRow) {
if (loCurRow.FindControl("edtQuestionNum") != null)
{
Response.Write(((TextBox)loCurRow.FindControl("edtQuestionNum")).Text + "||");
}
if (loCurRow.FindControl("ddlQuestionType") != null)
{
Response.Write(((DropDownList)loCurRow.FindControl("ddlQuestionType")).SelectValue+ ">>");
}
}
}
为什么每次打印在Page上的TextBox是我填写的值,而DropDownList都是第一条的Value?
7 个解决方案
#1
太长了,看的头晕
#2
to:
问题一 :
如果将动态构建GridView列的“fillGridView()”放在“IsPostBack”里面,单击Button后,GridView中我自己定义的TextBox和DropDownList就没有了。为什么?
问题二:
为什么GridView.DataSource == null?
if(!ispostback)是第一次加载时执行的,如果第二次加载则不再运行其中的程序.
问题一 :
如果将动态构建GridView列的“fillGridView()”放在“IsPostBack”里面,单击Button后,GridView中我自己定义的TextBox和DropDownList就没有了。为什么?
问题二:
为什么GridView.DataSource == null?
if(!ispostback)是第一次加载时执行的,如果第二次加载则不再运行其中的程序.
#3
this.grdChapter.EnableViewState = true;
这句话就直接在gridview属性中直接设置就可以了,,这样你第一次所取的数据在你单击button后会自动保存的,,,,
gridview.datasource==null,因为你的页面刷新了,,,当然为null了..
呵呵..
这句话就直接在gridview属性中直接设置就可以了,,这样你第一次所取的数据在你单击button后会自动保存的,,,,
gridview.datasource==null,因为你的页面刷新了,,,当然为null了..
呵呵..
#4
请问我的问题怎么解决呢!
我想在button onclick时间里面读取gridview每一行的DropDownList的值啊!
就像下面这个例子
http://blog.csdn.net/net_lover/archive/2006/09/13/1216855.aspx
要是放一个Button click一下,跟我遇到的问题一样,
怎么办啊!高手请帮忙!
我想在button onclick时间里面读取gridview每一行的DropDownList的值啊!
就像下面这个例子
http://blog.csdn.net/net_lover/archive/2006/09/13/1216855.aspx
要是放一个Button click一下,跟我遇到的问题一样,
怎么办啊!高手请帮忙!
#5
不要放在
if (!Page.IsPostBack) {}
里
if (!Page.IsPostBack) {}
里
#6
然后呢 :)
不用IsPostBack 我试过,每个控件都会被重新创建初始化,这样还是不能得到填写的值啊
不用IsPostBack 我试过,每个控件都会被重新创建初始化,这样还是不能得到填写的值啊
#7
每次綁定datagrid那麼dropdownlist邪說奧重新綁定一次的。
#1
太长了,看的头晕
#2
to:
问题一 :
如果将动态构建GridView列的“fillGridView()”放在“IsPostBack”里面,单击Button后,GridView中我自己定义的TextBox和DropDownList就没有了。为什么?
问题二:
为什么GridView.DataSource == null?
if(!ispostback)是第一次加载时执行的,如果第二次加载则不再运行其中的程序.
问题一 :
如果将动态构建GridView列的“fillGridView()”放在“IsPostBack”里面,单击Button后,GridView中我自己定义的TextBox和DropDownList就没有了。为什么?
问题二:
为什么GridView.DataSource == null?
if(!ispostback)是第一次加载时执行的,如果第二次加载则不再运行其中的程序.
#3
this.grdChapter.EnableViewState = true;
这句话就直接在gridview属性中直接设置就可以了,,这样你第一次所取的数据在你单击button后会自动保存的,,,,
gridview.datasource==null,因为你的页面刷新了,,,当然为null了..
呵呵..
这句话就直接在gridview属性中直接设置就可以了,,这样你第一次所取的数据在你单击button后会自动保存的,,,,
gridview.datasource==null,因为你的页面刷新了,,,当然为null了..
呵呵..
#4
请问我的问题怎么解决呢!
我想在button onclick时间里面读取gridview每一行的DropDownList的值啊!
就像下面这个例子
http://blog.csdn.net/net_lover/archive/2006/09/13/1216855.aspx
要是放一个Button click一下,跟我遇到的问题一样,
怎么办啊!高手请帮忙!
我想在button onclick时间里面读取gridview每一行的DropDownList的值啊!
就像下面这个例子
http://blog.csdn.net/net_lover/archive/2006/09/13/1216855.aspx
要是放一个Button click一下,跟我遇到的问题一样,
怎么办啊!高手请帮忙!
#5
不要放在
if (!Page.IsPostBack) {}
里
if (!Page.IsPostBack) {}
里
#6
然后呢 :)
不用IsPostBack 我试过,每个控件都会被重新创建初始化,这样还是不能得到填写的值啊
不用IsPostBack 我试过,每个控件都会被重新创建初始化,这样还是不能得到填写的值啊
#7
每次綁定datagrid那麼dropdownlist邪說奧重新綁定一次的。