最近学到datalist这个控件 在网上看到findcontrol的用法,不是很明白!
我现有一个有中有ID,Title,Body这三个字段
前台代码是这样:
asp:DataList ID="datalist2" runat="server" BackColor="#DEBA84"
ondeletecommand="DataList1_DeleteCommand" onupdatecommand="datalist2_UpdateCommand" >
<ItemTemplate>
<asp:Label ID="TitleLabel" runat="server" Text='<%# Eval("Title") %>' />
<asp:Label ID="BodyLabel" runat="server" Text='<%# Eval("Body") %>' />
<asp:Label ID="DatetimeLabel" runat="server" Text='<%# Eval("Datetime") %>' />
<asp:Button ID="btnUpdate" runat="server" onclick="btnUpdate_Click" Text="更新" CommandName="update" />
protected void datalist2_UpdateCommand(object source, DataListCommandEventArgs e)
{
int id = int.Parse(datalist2.DataKeys[e.Item.ItemIndex].ToString());
//string title = ((Label)e.Item.FindControl("TitleLabel")).Text.Trim();//是这样写吗?
//string body = ((Label)e.Item.FindControl("BodyLabel")).Text.Trim();//????????
string SQL="update Froms set 。。 ///
conn = new SqlConnection(str);
conn.open()
comm = new SqlCommand(SQL, conn);
comm.ExecuteNonQuery();
我看网上都是找的textbox!实在搞不明白~~麻烦大家指点下我~谢谢
Bind();//绑定
}
我现有一个有中有ID,Title,Body这三个字段
前台代码是这样:
asp:DataList ID="datalist2" runat="server" BackColor="#DEBA84"
ondeletecommand="DataList1_DeleteCommand" onupdatecommand="datalist2_UpdateCommand" >
<ItemTemplate>
<asp:Label ID="TitleLabel" runat="server" Text='<%# Eval("Title") %>' />
<asp:Label ID="BodyLabel" runat="server" Text='<%# Eval("Body") %>' />
<asp:Label ID="DatetimeLabel" runat="server" Text='<%# Eval("Datetime") %>' />
<asp:Button ID="btnUpdate" runat="server" onclick="btnUpdate_Click" Text="更新" CommandName="update" />
protected void datalist2_UpdateCommand(object source, DataListCommandEventArgs e)
{
int id = int.Parse(datalist2.DataKeys[e.Item.ItemIndex].ToString());
//string title = ((Label)e.Item.FindControl("TitleLabel")).Text.Trim();//是这样写吗?
//string body = ((Label)e.Item.FindControl("BodyLabel")).Text.Trim();//????????
string SQL="update Froms set 。。 ///
conn = new SqlConnection(str);
conn.open()
comm = new SqlCommand(SQL, conn);
comm.ExecuteNonQuery();
我看网上都是找的textbox!实在搞不明白~~麻烦大家指点下我~谢谢
Bind();//绑定
}
解决方案 »
- VS2010里的Solution Item是手动添加的吗?
- JS如何获取fileupload的本地绝对路径,兼容FF
- 连接未关闭,连接的当前状态为打开,为什么这样,我明明关闭了啊?
- SQL 2005
- 求一段代码 DataGrid的第一列既是选择列又是序号列的代码
- vs.net2005中文版,不必追求完美,已经可用于开发
- Request.ServerVariables集合的众多参数,谁能来解释下,这些参数的作用
- 如何调用一个查询?请教
- 请问如何建立一个基于的ASP的简单聊天室
- 无法检查模型兼容性,因为数据库不包含模型元数据。只能检查使用 Code First 或 Code First 迁移创建的数据库的模型兼容性
- 关于AspxGridView中找控件的问题,各位大虾帮忙看看
- 页面集合?
为什么要找呢?
以TitleLabel为例, 你要是页面上直接放一个ID为TitleLabel的控件,后台是不是直接就能TitleLabel.
这样“.”出他的属性和方法。但是你把Label放在了ItemTemplate下, 数据绑定后, 这个DataList 是不是会出现好多的Lable!你怎么再在后台TitleLabel.呢?这时候,FindControl就有用了。 你可以用e.Item.FindControl("TitleLabel")来找到控件了。
前面的(Label)是强制转换。 因为你ItemTemplate 循环的TitleLabel 类型就是Label 。 假如类型是TextBox,你就强制转换为TextBox类型。 不一定非得去找TextBox的, FindControl可以找到你页面上的任何的控件
if(e.CommandName="update")
{
}
else if(e.CommandName="delete")
{
}
CommandName="update" />
<asp:Button ID="btnDel" runat="server" onclick="btnDel_Click" CommandName="delete" Text="删除" />
<asp:Button ID="btnEdit" runat="server" onclick="btnEdit_Click" Text="编辑" />后台:
protected void datalist2_EditCommand(object source, DataListCommandEventArgs e)
{
datalist2.EditItemIndex = e.Item.ItemIndex;
Bind();
}
protected void datalist2_UpdateCommand(object source, DataListCommandEventArgs e)
{
int id = int.Parse(datalist2.DataKeys[e.Item.ItemIndex].ToString());
string title = ((Label)e.Item.FindControl("TitleLabel")).Text.Trim();
string body = ((Label)e.Item.FindControl("BodyLabel")).Text.Trim();
conn = new SqlConnection(str);
conn.Open();
string SQL="update Froms set TitleLabel="+title+",BodyLabel='"+body+"' where ID="+id+"";
comm = new SqlCommand(SQL, conn);
comm.ExecuteNonQuery();
Bind();
datalist2.EditItemIndex = -1;
conn.Close();
}
protected void datalist2_ItemCommand(object source, DataListCommandEventArgs e)
{
}
发现这样不对!麻烦高人们帮帮忙!