DataGrid中如何访问EditItemTemplate中的控件? 1. 设置DataGrid的EditItemIndex属性2. 重新设置DataGrid的DataSource、执行DataGrid的DataBind方法现在就可以使用EditItemTemplate里的控件了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先对datagrid数据绑定,再访问 先DataBind访问用(CheckBox)datalist.Items[i].FindControl(checkBoxString) 给其赋值应该在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="此处为空值"; } } ctype(e.item.cells(0).controls(0),textbox).text或者dim t as textboxt=e.item.findcontrol("textbox1") 谢谢热心的朋友!不过大家可能还不太明白我的意思。我在点击DataGrid中的某一行的“编辑”按钮时,触发这个按钮的处理函数,在这个函数中设置EditItemIndex。但此时设置为编辑的那一行好像还是处于原来的浏览状态,也就是说EditItemTemplate中的控件还没生成,我事先绑定也没用,大家有什么好办法吗? 在EditCommand事件处理函数中写e.Item.ItemIndex = -1 没那么麻烦吧!在HTML里<EditItemTemplate> <asp:TextBox id=TextBox2 runat="server" Width="111px" Text="初值"> </asp:TextBox> </EditItemTemplate>也可以绑定数据或函数!! 楼上各位说的都是TextBox的情况。不过我这里用的是DropDownList,需要根据数据库里的数值来动态设置DropDownList中的List的默认选定项,比如,List的备选项为“已完成”和“未完成”,数据库里的某字段为“已完成”,则进入编辑状态时默认的选项就为“已完成”。通常应该在程序里设置,但刚进入编辑状态时我根本找不到这个DropDownList空间呀。 [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; } } 怎样控制GridView使其中的删除按钮有的行显示,有的行不显示? 模板列更新数据库 请教一个简单的问题! 这句代码是什么意思 confirm 在ie7中失效了吗??? css滤镜的半透明效果挡不住下拉菜单 项目要收尾了,打印搞不定。现金10000求解决方案!!! 请问各位大侠, 你们在开发网站时, 会对 SessionID 作什么样的处理?? 代码纠错~简单 IIS8.5预加载没有生效 学了asp.net后 怎么获得其它网站页面的内容呢?网上有文章说用InetCtls.Inet,可是我一用就出错,是不是要安装一个什么东西呀?
访问用(CheckBox)datalist.Items[i].FindControl(checkBoxString)
{
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="此处为空值";
}
}
或者
dim t as textbox
t=e.item.findcontrol("textbox1")
e.Item.ItemIndex = -1
在HTML里
<EditItemTemplate>
<asp:TextBox id=TextBox2 runat="server" Width="111px" Text="初值">
</asp:TextBox>
</EditItemTemplate>
也可以绑定数据或函数!!
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;
}
}