看着本来就能够解决的问题,做到后来确是一踏糊涂.头大了,心碎了,我累了,兄弟姐妹们,帮帮我吧!请看以下代码:
private void CreateDataGrid(string tableName,string course,string group,string groupValue)
{
//创建DataGrid
string temp;
//数据分组方式
if(group=="班号")
temp="SubString(学号,4,2)";
else
temp="考室";
AdvancedDataOP dataOP=new AdvancedDataOP("Student");//此乃一个封装了数据库相关操作的类,构造时将其连接到SQL Server中的Student库 //根据指定的科目得到相应的列
if(course=="语文")
{
if(groupValue=="全部")
ds=dataOP.GetDataSet(tableName+" ORDER BY "+temp,"考号,姓名,语卷");
else
ds=dataOP.GetDataSet(tableName,"考号,姓名,语卷",temp+"='"+groupValue+"' ORDER BY "+temp);
//以上得到数据集 //下开始定义DataGrid列
BoundColumn col=new BoundColumn();
col.HeaderText="考号";
col.DataField="考号";
dgInput.Columns.Add(col); col=new BoundColumn();
col.HeaderText="姓名";
col.DataField="姓名";
dgInput.Columns.Add(col); TemplateColumn tCol=new TemplateColumn();
tCol.HeaderText="语卷";
tCol.EditItemTemplate=new TemplateItem("语卷");
dgInput.Columns.Add(tCol); dgInput.DataSource=ds;
dgInput.DataMember=tableName;
dgInput.DataBind();
}
}
}class TemplateItem:System.Web.UI.ITemplate
{
string columnName;
public TemplateItem(string colnamer)
{
columnName = colnamer;
} public void InstantiateIn(System.Web.UI.Control container)
{
TextBox txtScore=new TextBox();
txtScore.Text=null;
container.Controls.Add(txtScore);
}程序运行后在给定相关参数后能动态显示出列,前两个BoundColumn的值也完全正常.我的目的是要在后一列(即语卷)列实现数据录入,可是,问题出来了:TextBox好像并没有绑定到DataGrid模板列中,根本就没有数据输入焦点,这叫我怎么输入数据呢?!请问这究竟是哪儿出了问题?!该怎么解决叱?!请指教.谢谢!!!
private void CreateDataGrid(string tableName,string course,string group,string groupValue)
{
//创建DataGrid
string temp;
//数据分组方式
if(group=="班号")
temp="SubString(学号,4,2)";
else
temp="考室";
AdvancedDataOP dataOP=new AdvancedDataOP("Student");//此乃一个封装了数据库相关操作的类,构造时将其连接到SQL Server中的Student库 //根据指定的科目得到相应的列
if(course=="语文")
{
if(groupValue=="全部")
ds=dataOP.GetDataSet(tableName+" ORDER BY "+temp,"考号,姓名,语卷");
else
ds=dataOP.GetDataSet(tableName,"考号,姓名,语卷",temp+"='"+groupValue+"' ORDER BY "+temp);
//以上得到数据集 //下开始定义DataGrid列
BoundColumn col=new BoundColumn();
col.HeaderText="考号";
col.DataField="考号";
dgInput.Columns.Add(col); col=new BoundColumn();
col.HeaderText="姓名";
col.DataField="姓名";
dgInput.Columns.Add(col); TemplateColumn tCol=new TemplateColumn();
tCol.HeaderText="语卷";
tCol.EditItemTemplate=new TemplateItem("语卷");
dgInput.Columns.Add(tCol); dgInput.DataSource=ds;
dgInput.DataMember=tableName;
dgInput.DataBind();
}
}
}class TemplateItem:System.Web.UI.ITemplate
{
string columnName;
public TemplateItem(string colnamer)
{
columnName = colnamer;
} public void InstantiateIn(System.Web.UI.Control container)
{
TextBox txtScore=new TextBox();
txtScore.Text=null;
container.Controls.Add(txtScore);
}程序运行后在给定相关参数后能动态显示出列,前两个BoundColumn的值也完全正常.我的目的是要在后一列(即语卷)列实现数据录入,可是,问题出来了:TextBox好像并没有绑定到DataGrid模板列中,根本就没有数据输入焦点,这叫我怎么输入数据呢?!请问这究竟是哪儿出了问题?!该怎么解决叱?!请指教.谢谢!!!
{
string columnName;
public TemplateItem(string colnamer)
{
columnName = colnamer;
InstantiateIn();
} public void InstantiateIn()
{
TextBox txtScore=new TextBox();
txtScore.Text=null;
container.Controls.Add(txtScore);
}
该问题的关键是没有弄清模板列和列模板的概念.好在我已经解决了.
在Edit模板里面放textbox
编辑Edit_Command事件,相信你的问题能更好的解决
DataGrid 提供了有del,update,edit模版