11 个解决方案
#1
1. 设置DataGrid的EditItemIndex属性
2. 重新设置DataGrid的DataSource、执行DataGrid的DataBind方法
现在就可以使用EditItemTemplate里的控件了
2. 重新设置DataGrid的DataSource、执行DataGrid的DataBind方法
现在就可以使用EditItemTemplate里的控件了
#2
先对datagrid数据绑定,再访问
#3
先DataBind
访问用(CheckBox)datalist.Items[i].FindControl(checkBoxString)
访问用(CheckBox)datalist.Items[i].FindControl(checkBoxString)
#4
高手如云
#5
给其赋值应该在DataBound中:例子如下:
if(e.Item.ItemType==ListItemType.Item ||e.Item.ItemType==ListItemType.AlternatingItem)
{
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
Label label=new Label();
label=(Label)e.Item.Cells[5].FindControl("lbTime");
if(label.Text==""||label.Text==null)
label.Text="此处为空值";
}
}
if(e.Item.ItemType==ListItemType.Item ||e.Item.ItemType==ListItemType.AlternatingItem)
{
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
Label label=new Label();
label=(Label)e.Item.Cells[5].FindControl("lbTime");
if(label.Text==""||label.Text==null)
label.Text="此处为空值";
}
}
#6
ctype(e.item.cells(0).controls(0),textbox).text
或者
dim t as textbox
t=e.item.findcontrol("textbox1")
或者
dim t as textbox
t=e.item.findcontrol("textbox1")
#7
谢谢热心的朋友!不过大家可能还不太明白我的意思。我在点击DataGrid中的某一行的“编辑”按钮时,触发这个按钮的处理函数,在这个函数中设置EditItemIndex。但此时设置为编辑的那一行好像还是处于原来的浏览状态,也就是说EditItemTemplate中的控件还没生成,我事先绑定也没用,大家有什么好办法吗?
#8
在EditCommand事件处理函数中写
e.Item.ItemIndex = -1
e.Item.ItemIndex = -1
#9
没那么麻烦吧!
在HTML里
<EditItemTemplate>
<asp:TextBox id=TextBox2 runat="server" Width="111px" Text="初值">
</asp:TextBox>
</EditItemTemplate>
也可以绑定数据或函数!!
在HTML里
<EditItemTemplate>
<asp:TextBox id=TextBox2 runat="server" Width="111px" Text="初值">
</asp:TextBox>
</EditItemTemplate>
也可以绑定数据或函数!!
#10
楼上各位说的都是TextBox的情况。不过我这里用的是DropDownList,需要根据数据库里的数值来动态设置DropDownList中的List的默认选定项,比如,List的备选项为“已完成”和“未完成”,数据库里的某字段为“已完成”,则进入编辑状态时默认的选项就为“已完成”。通常应该在程序里设置,但刚进入编辑状态时我根本找不到这个DropDownList空间呀。
#11
[C#]
xx.aspx
...
<asp:TemplateColumn SortExpression="depName" HeaderText="单位名称">
<ItemTemplate>
<asp:Label Runat=server Text='<%# DataBinder.Eval(Container.DataItem,"depName")%>' ID="Label2" />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Runat=server Columns=12 id="edit_depname" Text='<%# DataBinder.Eval(Container.DataItem,"depName")%>' />
</EditItemTemplate>
</asp:TemplateColumn>
xx.aspx.cs
...
/// <summary>
/// 更新数据
/// </summary>
/// <param name="source"></param>
/// <param name="e"></param>
private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
string cmd = "Update depart set depname= @dep_name where depid = @id";
SqlConnection conn = new SqlConnection(sql);
SqlCommand comm = new SqlCommand(cmd,conn);
// 新建参数
comm.Parameters.Add(new SqlParameter("@id",SqlDbType.NVarChar,20));
comm.Parameters.Add(new SqlParameter("@dep_name",SqlDbType.NVarChar,30));
// 给参数赋值
comm.Parameters["@id"].Value = DataGrid1.DataKeys[(int)e.Item.ItemIndex];
comm.Parameters["@dep_name"].Value = ((TextBox)e.Item.FindControl("edit_depname")).Text;
// 执行SQL语句
try
{
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
DataGrid1.EditItemIndex = -1;
DataGridBind();
Label1.Text = "Succeed!";
}
catch(SqlException ex)
{
Label1.Text = "Error:"+ ex.Message;
}
}
xx.aspx
...
<asp:TemplateColumn SortExpression="depName" HeaderText="单位名称">
<ItemTemplate>
<asp:Label Runat=server Text='<%# DataBinder.Eval(Container.DataItem,"depName")%>' ID="Label2" />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Runat=server Columns=12 id="edit_depname" Text='<%# DataBinder.Eval(Container.DataItem,"depName")%>' />
</EditItemTemplate>
</asp:TemplateColumn>
xx.aspx.cs
...
/// <summary>
/// 更新数据
/// </summary>
/// <param name="source"></param>
/// <param name="e"></param>
private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
string cmd = "Update depart set depname= @dep_name where depid = @id";
SqlConnection conn = new SqlConnection(sql);
SqlCommand comm = new SqlCommand(cmd,conn);
// 新建参数
comm.Parameters.Add(new SqlParameter("@id",SqlDbType.NVarChar,20));
comm.Parameters.Add(new SqlParameter("@dep_name",SqlDbType.NVarChar,30));
// 给参数赋值
comm.Parameters["@id"].Value = DataGrid1.DataKeys[(int)e.Item.ItemIndex];
comm.Parameters["@dep_name"].Value = ((TextBox)e.Item.FindControl("edit_depname")).Text;
// 执行SQL语句
try
{
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
DataGrid1.EditItemIndex = -1;
DataGridBind();
Label1.Text = "Succeed!";
}
catch(SqlException ex)
{
Label1.Text = "Error:"+ ex.Message;
}
}
#1
1. 设置DataGrid的EditItemIndex属性
2. 重新设置DataGrid的DataSource、执行DataGrid的DataBind方法
现在就可以使用EditItemTemplate里的控件了
2. 重新设置DataGrid的DataSource、执行DataGrid的DataBind方法
现在就可以使用EditItemTemplate里的控件了
#2
先对datagrid数据绑定,再访问
#3
先DataBind
访问用(CheckBox)datalist.Items[i].FindControl(checkBoxString)
访问用(CheckBox)datalist.Items[i].FindControl(checkBoxString)
#4
高手如云
#5
给其赋值应该在DataBound中:例子如下:
if(e.Item.ItemType==ListItemType.Item ||e.Item.ItemType==ListItemType.AlternatingItem)
{
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
Label label=new Label();
label=(Label)e.Item.Cells[5].FindControl("lbTime");
if(label.Text==""||label.Text==null)
label.Text="此处为空值";
}
}
if(e.Item.ItemType==ListItemType.Item ||e.Item.ItemType==ListItemType.AlternatingItem)
{
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
Label label=new Label();
label=(Label)e.Item.Cells[5].FindControl("lbTime");
if(label.Text==""||label.Text==null)
label.Text="此处为空值";
}
}
#6
ctype(e.item.cells(0).controls(0),textbox).text
或者
dim t as textbox
t=e.item.findcontrol("textbox1")
或者
dim t as textbox
t=e.item.findcontrol("textbox1")
#7
谢谢热心的朋友!不过大家可能还不太明白我的意思。我在点击DataGrid中的某一行的“编辑”按钮时,触发这个按钮的处理函数,在这个函数中设置EditItemIndex。但此时设置为编辑的那一行好像还是处于原来的浏览状态,也就是说EditItemTemplate中的控件还没生成,我事先绑定也没用,大家有什么好办法吗?
#8
在EditCommand事件处理函数中写
e.Item.ItemIndex = -1
e.Item.ItemIndex = -1
#9
没那么麻烦吧!
在HTML里
<EditItemTemplate>
<asp:TextBox id=TextBox2 runat="server" Width="111px" Text="初值">
</asp:TextBox>
</EditItemTemplate>
也可以绑定数据或函数!!
在HTML里
<EditItemTemplate>
<asp:TextBox id=TextBox2 runat="server" Width="111px" Text="初值">
</asp:TextBox>
</EditItemTemplate>
也可以绑定数据或函数!!
#10
楼上各位说的都是TextBox的情况。不过我这里用的是DropDownList,需要根据数据库里的数值来动态设置DropDownList中的List的默认选定项,比如,List的备选项为“已完成”和“未完成”,数据库里的某字段为“已完成”,则进入编辑状态时默认的选项就为“已完成”。通常应该在程序里设置,但刚进入编辑状态时我根本找不到这个DropDownList空间呀。
#11
[C#]
xx.aspx
...
<asp:TemplateColumn SortExpression="depName" HeaderText="单位名称">
<ItemTemplate>
<asp:Label Runat=server Text='<%# DataBinder.Eval(Container.DataItem,"depName")%>' ID="Label2" />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Runat=server Columns=12 id="edit_depname" Text='<%# DataBinder.Eval(Container.DataItem,"depName")%>' />
</EditItemTemplate>
</asp:TemplateColumn>
xx.aspx.cs
...
/// <summary>
/// 更新数据
/// </summary>
/// <param name="source"></param>
/// <param name="e"></param>
private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
string cmd = "Update depart set depname= @dep_name where depid = @id";
SqlConnection conn = new SqlConnection(sql);
SqlCommand comm = new SqlCommand(cmd,conn);
// 新建参数
comm.Parameters.Add(new SqlParameter("@id",SqlDbType.NVarChar,20));
comm.Parameters.Add(new SqlParameter("@dep_name",SqlDbType.NVarChar,30));
// 给参数赋值
comm.Parameters["@id"].Value = DataGrid1.DataKeys[(int)e.Item.ItemIndex];
comm.Parameters["@dep_name"].Value = ((TextBox)e.Item.FindControl("edit_depname")).Text;
// 执行SQL语句
try
{
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
DataGrid1.EditItemIndex = -1;
DataGridBind();
Label1.Text = "Succeed!";
}
catch(SqlException ex)
{
Label1.Text = "Error:"+ ex.Message;
}
}
xx.aspx
...
<asp:TemplateColumn SortExpression="depName" HeaderText="单位名称">
<ItemTemplate>
<asp:Label Runat=server Text='<%# DataBinder.Eval(Container.DataItem,"depName")%>' ID="Label2" />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Runat=server Columns=12 id="edit_depname" Text='<%# DataBinder.Eval(Container.DataItem,"depName")%>' />
</EditItemTemplate>
</asp:TemplateColumn>
xx.aspx.cs
...
/// <summary>
/// 更新数据
/// </summary>
/// <param name="source"></param>
/// <param name="e"></param>
private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
string cmd = "Update depart set depname= @dep_name where depid = @id";
SqlConnection conn = new SqlConnection(sql);
SqlCommand comm = new SqlCommand(cmd,conn);
// 新建参数
comm.Parameters.Add(new SqlParameter("@id",SqlDbType.NVarChar,20));
comm.Parameters.Add(new SqlParameter("@dep_name",SqlDbType.NVarChar,30));
// 给参数赋值
comm.Parameters["@id"].Value = DataGrid1.DataKeys[(int)e.Item.ItemIndex];
comm.Parameters["@dep_name"].Value = ((TextBox)e.Item.FindControl("edit_depname")).Text;
// 执行SQL语句
try
{
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
DataGrid1.EditItemIndex = -1;
DataGridBind();
Label1.Text = "Succeed!";
}
catch(SqlException ex)
{
Label1.Text = "Error:"+ ex.Message;
}
}