VS2008中。。
GridView代码如下
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" GridLines="None">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<div class="spe_location">
管理员<input type="text" id="txtAdminName" runat="server" value='<%#Eval("AdminName") %>' />
密 码 <input type="text" id="txtAdminPwd" runat="server" /> 权限:
<input id="rtnUpdate" type="radio" runat="server" title="AdminRole" checked='<%#Checked(Eval("AdminKind")) %>' />管理
<input id="rtnSelect" type="radio" runat="server" title="AdminRole" onclick="chkClick()" checked='<%#!Checked(Eval("AdminKind")) %>' />查看
<asp:ImageButton ID="imgEdit" runat="server"
ImageUrl="~/images/admin/edit_btn.gif" onclick="imgEdit_Click" CommandArgument='<%#Eval("AdminID") %>' />
<asp:LinkButton ID="ltnDelete" runat="server" ForeColor="#CC0000"
onclick="ltnDelete_Click" CommandArgument='<%#Eval("AdminID") %>'>删除</asp:LinkButton><br />
</div>
<div class="hos_map">
<input id="chkUser" runat="server" type="checkbox" checked='<%#Eval("Admin_as_User") %>' />用户管理
<input id="chkOrder" runat="server" type="checkbox" checked='<%#Eval("Admin_as_Order") %>' />订单管理
<input id="chkGoods" runat="server" type="checkbox" checked='<%#Eval("Admin_as_Goods") %>' />商品管理
</div>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
怎么在后台cs文件中获取ItemTemplate里textbox,radio,checkbox的值??
后台我是这样写的 protected void imgEdit_Click(object sender, ImageClickEventArgs e)
{
ImageButton imgbtn = sender as ImageButton; string sql = "update Admin set AdminName=@AdminName,AdminPwd=@AdminPwd,AdminKind=@AdminKind,Admin_as_User=@Admin_as_User,Admin_as_Order=@Admin_as_Order,Admin_as_Goods=@Admin_as_Goods where AdminID=@AdminID "; SqlConnection con = new SqlConnection(str); SqlCommand cmd = new SqlCommand(sql, con); cmd.Parameters.Add("@AdminID", SqlDbType.Int).Value = imgbtn;
cmd.Parameters.Add("@AdminName", SqlDbType.VarChar).Value = ?????????????????????;
cmd.Parameters.Add("@AdminPwd",SqlDbType.VarChar).Value=????????;
cmd.Parameters.Add("@AdminKind",SqlDbType.Char).Value=?????????;
cmd.Parameters.Add("@Admin_as_User",SqlDbType.Bit).Value=???????????;
cmd.Parameters.Add("@Admin_as_Order",SqlDbType.Bit).Value=???????????;
cmd.Parameters.Add("@Admin_as_Goods",SqlDbType.Bit).Value=???????????;
}
数据库是sql server 2005
create table Admin
(
AdminID int primary key identity(1,1)
,AdminName varchar(20) not null
,AdminPwd varchar(20) not null
,AdminKind char(1) default 0
,Admin_as_User bit default 0
,Admin_as_Order bit default 0
,Admin_as_Goods bit default 0
)
请大师们指点迷津拜谢
e是点不出row这个属性的都在ItemTemplate里
GridViewRow gvr = (sender as LinkButton).NamingContainer as GridViewRow;
TextBox txt=gvr.FindControl("txt") as TextBox;
不要告诉我没 i
{
CheckBox CheckBox1 = GridView1.Rows[i].FindControl("CheckBox1") as CheckBox;
Textbox Textbox1 = (textbox)GridView1.Rows[i].FindControl("Textbox1");
}
或者使用行列单元格方法去定位吧
linkButton lb=row.findControl() as LinkButton;
}
LinkButton lb = row.FindControl("LinkButton") as LinkButton;
if(text!=null) //为空说明没找到 检查你前台GridView的代码
{
// 。
}
<ItemTemplate>
<div class="spe_location">
管理员<input type="text" id="txtAdminName" runat="server" value='<%#Eval("AdminName") %>' />
密 码 <input type="text" id="txtAdminPwd" runat="server" /> 权限:
<input id="rtnUpdate" type="radio" runat="server" title="AdminRole" checked='<%#Checked(Eval("AdminKind")) %>' />管理
<input id="rtnSelect" type="radio" runat="server" title="AdminRole" onclick="chkClick()" checked='<%#!Checked(Eval("AdminKind")) %>' />查看
<asp:ImageButton ID="imgEdit" runat="server"
ImageUrl="~/images/admin/edit_btn.gif" onclick="imgEdit_Click" CommandArgument='<%#Eval("AdminID") %>' />
<asp:LinkButton ID="ltnDelete" runat="server" ForeColor="#CC0000"
onclick="ltnDelete_Click" CommandArgument='<%#Eval("AdminID") %>'>删除</asp:LinkButton><br />
</div>
<div class="hos_map">
<input id="chkUser" runat="server" type="checkbox" checked='<%#Eval("Admin_as_User") %>' />用户管理
<input id="chkOrder" runat="server" type="checkbox" checked='<%#Eval("Admin_as_Order") %>' />订单管理
<input id="chkGoods" runat="server" type="checkbox" checked='<%#Eval("Admin_as_Goods") %>' />商品管理
</div>
</ItemTemplate>
</asp:TemplateField>
{ string sql = "select AdminID,AdminName,AdminPwd,AdminKind,Admin_as_User,Admin_as_Order,Admin_as_Goods from Admin"; SqlConnection con = new SqlConnection(str); SqlCommand cmd = new SqlCommand(sql, con); DataSet ds = new DataSet(); SqlDataAdapter da = new SqlDataAdapter(cmd); con.Open(); da.Fill(ds); this.GridView1.DataSource = ds.Tables[0];
this.GridView1.DataBind(); }
你使用的是客户端控件,获取值则需要通过js脚本来获取,会比较麻烦
可以参照:http://zhidao.baidu.com/question/99872428建议你使用服务器端控件,获取extbox,radio,checkbox的值就比较简单了。
你的是ImageButton所以要写作
GridViewRow gvr = (sender as ImageButton).NamingContainer as GridViewRow;
TextBox txt=gvr.FindControl("txt") as TextBox;
可能是我gridview里的是客户端控件。。
生成页面之后控件的ID全变了。。
我不想换成服务器控件能找到ID么?
绑定数据时按照行号或者每一行的主键值,给该行的每个控件都绑定一个唯一的name即可。
比如:<input type="text" id="txtAdminName" name='<%# "txtAdminName" + Eval("AdminID") %>'
然后在代码页里用
string index = e.CommandArgument.ToString(); //唯一标识值
string AdminName = Request.Form["txtAdminName" + index ] //获取单个控件的值大致思路是这样吧,楼主不妨一试..
这里面加一项DataKeyNames="id" 然后通过DataKey[e.RowIndex].value 来取。
该e参数才是绑定的事件的参数