ASP gridview中点击显示详细信息如何写?
我在gridview中使用了一个commandfield控件,代码如下:protectedvoidGridView1_RowEditing(objectsender,Gr...
我在gridview中使用了一个commandfield控件,代码如下:
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{ string Uid = GridView1.DataKeys[e.RowIndex].Value.ToString(); SqlConnection conn = new SqlConnection(); conn.ConnectionString = "Data Source=WWW-76912774763;Initial Catalog=sxhj;Integrated Security=True"; SqlCommand selectsql = new SqlCommand("select * from Usersinfo where Uid = '" + Uid + "'", conn); SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = selectsql; DataSet ds = new DataSet(); da.Fill(ds); //return ds; DataSet ds1 = GetDataSet(Uid); GridView2.DataSource = ds1; GridView2.DataBind(); }提示错误 20 “System.Web.UI.WebControls.GridViewEditEventArgs”并不包含“RowIndex”的定义 。
请问需要如何修改才能使gridview1中的一行信息显示在gridview2中 展开
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{ string Uid = GridView1.DataKeys[e.RowIndex].Value.ToString(); SqlConnection conn = new SqlConnection(); conn.ConnectionString = "Data Source=WWW-76912774763;Initial Catalog=sxhj;Integrated Security=True"; SqlCommand selectsql = new SqlCommand("select * from Usersinfo where Uid = '" + Uid + "'", conn); SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = selectsql; DataSet ds = new DataSet(); da.Fill(ds); //return ds; DataSet ds1 = GetDataSet(Uid); GridView2.DataSource = ds1; GridView2.DataBind(); }提示错误 20 “System.Web.UI.WebControls.GridViewEditEventArgs”并不包含“RowIndex”的定义 。
请问需要如何修改才能使gridview1中的一行信息显示在gridview2中 展开
5个回答
展开全部
1、在 GridView1_RowEdting 石建安里面没有 e.RowIndex, 只有 e.NewEditIndexNewIndex 这个属性,应该是你想要的。
你的思路是对的,这句话 string Uid = GridView1.DataKeys[e.RowIndex].Value.ToString();改下: string Uid=GridView1.Rows[e.NewSelectedIndex].Cells["UId这一列的字段"].Text;
我用的是 选择 这个事件 GridView2_SelectedIndexChanging(object sender, GridViewSelectEventArgs e) {}
代码:
protected void GridView2_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
string name =GridView2.Rows[e.NewSelectedIndex].Cells[1].Text;
string sql = "select * from Role where Name = '"+name+"'";
DataTable dt = new DataTable();
dt = DBAccessHelper.GetDataTableFromSql(sql);
GridView1.DataSource = dt;
GridView1.DataBind();
}
我这里测试是没有问题的,看看你哪里可以不,不行再说。
你的思路是对的,这句话 string Uid = GridView1.DataKeys[e.RowIndex].Value.ToString();改下: string Uid=GridView1.Rows[e.NewSelectedIndex].Cells["UId这一列的字段"].Text;
我用的是 选择 这个事件 GridView2_SelectedIndexChanging(object sender, GridViewSelectEventArgs e) {}
代码:
protected void GridView2_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
string name =GridView2.Rows[e.NewSelectedIndex].Cells[1].Text;
string sql = "select * from Role where Name = '"+name+"'";
DataTable dt = new DataTable();
dt = DBAccessHelper.GetDataTableFromSql(sql);
GridView1.DataSource = dt;
GridView1.DataBind();
}
我这里测试是没有问题的,看看你哪里可以不,不行再说。
追问
我测试了下,提示错误 20 “System.EventArgs”并不包含“NewSelectedIndex”的定义,还有你贴出的代码为何是在gridview2写事件
追答
嗯 ,我的这个是在 gridview2里面写的,我显示的时候 放在 girdview1里面了,这个无所谓,看你怎么弄的就行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
主要问题还是在于如果定位到那一行,网上有很多,rowEdit我很少用,
给个例子吧,页面端:
<asp:TemplateField HeaderText="操作">
<ItemTemplate>
<asp:LinkButton ID="lbtnEdit" Text='显示详细信息' runat="server" CommandName="EditRow" CommandArgument='<%# Eval("主键") %>'></asp:LinkButton>
</ItemTemplate>
<ItemStyle Width="10%" />
</asp:TemplateField>
后台:
protected void gridview1_RowCommand(object sender, GridViewCommandEventArgs e) {
if ("EditRow".Equals(e.CommandName))
{
string Uid =e.CommandArgument.toString();
给个例子吧,页面端:
<asp:TemplateField HeaderText="操作">
<ItemTemplate>
<asp:LinkButton ID="lbtnEdit" Text='显示详细信息' runat="server" CommandName="EditRow" CommandArgument='<%# Eval("主键") %>'></asp:LinkButton>
</ItemTemplate>
<ItemStyle Width="10%" />
</asp:TemplateField>
后台:
protected void gridview1_RowCommand(object sender, GridViewCommandEventArgs e) {
if ("EditRow".Equals(e.CommandName))
{
string Uid =e.CommandArgument.toString();
更多追问追答
追问
网上确实有很多涉及前台的解决方案,但是我对前台不是很了解,能否解释你的方法如何实现?谢谢
追答
页面端代码直接拷贝覆盖原来显示详细信息字段代码,gridview添加RowCommand事件,在前台设计视图模式点gridview属性,双击事件选项中的RowCommand事件,自动在后台生成事件,你把我的后台代码考进去。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<asp:TemplateField HeaderText="显示详细信息">
<ItemTemplate>
<a href='你要跳转的APSX页面名称(暂定A.ASPX).aspx?关键字(暂定XXXXid)=<%#Eval("XXXXid") %>'>修改</a>
</ItemTemplate>
</asp:TemplateField>然后到A.ASPX页面后台,使用Request.Params["XXXXid"]获取这个ID,再做个查询就OK了。这一条不要放在EditItem下面,做个单独的就行了。
<ItemTemplate>
<a href='你要跳转的APSX页面名称(暂定A.ASPX).aspx?关键字(暂定XXXXid)=<%#Eval("XXXXid") %>'>修改</a>
</ItemTemplate>
</asp:TemplateField>然后到A.ASPX页面后台,使用Request.Params["XXXXid"]获取这个ID,再做个查询就OK了。这一条不要放在EditItem下面,做个单独的就行了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在你点gridview1中的某个人的时候,你应该传递该用户的用户编号(能够代表该用户的唯一编号),然后在绑定gridview2时,接收该编号,并为gridview2绑定该用户的所有信息。
gridview的属性中有个datakeyname的属性,将用户表中的用户id那一列的列名填写到该属性中。
gridview的属性中有个datakeyname的属性,将用户表中的用户id那一列的列名填写到该属性中。
追问
这个属性已经设置了
追答
接收该编号,在gridview2绑定数据就行了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询