问题没解决 .再发一贴.Gridview 嵌套 获取父Gridview的主键值

pdsnet 2009-03-04 01:38:38
点击 asdf 这行"编辑" 怎么 获取cccc的主键值? 我的相关代码


在 父Gridview 那个事件下 获取主键值 给 Index;
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
Index = Convert.ToInt16(e.CommandArgument.ToString());//我这样写不行我在 前台怎么给 CommandArgument赋值?
Response.Write(e.CommandArgument.ToString().Length);//结果是 :0

}

protected void ClassChild_RowEditing(object sender, GridViewEditEventArgs e)
{ GridView ClassChild = (GridView)sender;
ClassChild.EditIndex = e.NewEditIndex;
BindChild(ClassChild); }
protected void BindChild(GridView gv)
{
gv.DataSource = Bll.GetList("SD_class.SD_ParentId =" + Convert.ToInt16(GridView1.DataKeys[Index].Values[0]) + "and SD_class.SD_Level=2"); //现在报错的地方就是 这个 "Index";
gv.DataBind();
}
private int Index
{
get
{
if (ViewState["Index"] != null && ViewState["Index"].ToString() != "")
{
return Convert.ToInt32(ViewState["Index"]);
}
else
{
return -1;
}
}
set
{
ViewState["Index"] = value;
}
}

这是 中间一个模板列的内容
  <asp:TemplateField HeaderText="删除" ShowHeader="False">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandArgument='<%# Eval("SD_ClassId") %>' CommandName="Delete"
Text="删除"></asp:LinkButton>
</ItemTemplate>

<FooterTemplate>
<asp:LinkButton ID="AddClass" runat="server" CausesValidation="False" CommandName="AddClass"
Text="添加栏目"></asp:LinkButton>
</FooterTemplate>
</asp:TemplateField>

弄了好长时间 没弄成 谢谢 各位了.
上一贴地址 上一贴地址
...全文
349 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
suqifeng 2011-12-19
  • 打赏
  • 举报
回复
我是要获取 父gridView 里面的 的ID ..
pdsnet 2009-03-04
  • 打赏
  • 举报
回复
非常感谢两位的帮助jimu8130 Jinglecat .
pdsnet 2009-03-04
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 Jinglecat 的回复:]
1. 用 CommandArgument 去存 DataKey 或者 RowIndex 都是没必要的,当然没有错,
本身控件层次足够你回溯到任何父级控件属性

2. 一定要善用 Control_Event(object sender ...) 中的 sender 以及 Control.NamingContainer 和 Control.BindingContainer 属性

3. ASP.NET DEMO 5:如何在GridView的RowCommand事件中获取当前的GridViewRow
[/Quote] 终于好了 太感谢了 .. 你一定能找个好工作!!!!!!!!!!!!!!!!!
jimu8130 2009-03-04
  • 打赏
  • 举报
回复
1. 用 CommandArgument 去存 DataKey 或者 RowIndex 都是没必要的,当然没有错,
本身控件层次足够你回溯到任何父级控件属性

2. 一定要善用 Control_Event(object sender ...) 中的 sender 以及 Control.NamingContainer 和 Control.BindingContainer 属性

3. ASP.NET DEMO 5:如何在GridView的RowCommand事件中获取当前的GridViewRow
----------------------
学习学习
Jinglecat 2009-03-04
  • 打赏
  • 举报
回复
1. 用 CommandArgument 去存 DataKey 或者 RowIndex 都是没必要的,当然没有错,
本身控件层次足够你回溯到任何父级控件属性

2. 一定要善用 Control_Event(object sender ...) 中的 sender 以及 Control.NamingContainer 和 Control.BindingContainer 属性

3. ASP.NET DEMO 5:如何在GridView的RowCommand事件中获取当前的GridViewRow
zhxhdean 2009-03-04
  • 打赏
  • 举报
回复
CommandArgument=' <%# DataBinder.Eval(Container,"RowIndex") %>' 
Jinglecat 2009-03-04
  • 打赏
  • 举报
回复
protected void ClassChild_RowEditing(object sender, GridViewEditEventArgs e)
{ GridView ClassChild = (GridView)sender;
ClassChild.EditIndex = e.NewEditIndex;
BindChild(ClassChild);
//
GridViewRow parentRow = (GridViewRow)ClassChild.BindingContainer;
object parentKey = GridView1.DataKeys[parentRow.RowIndex].Value;

}

jimu8130 2009-03-04
  • 打赏
  • 举报
回复
这样的话你就可以在你的内层gridview的rowcommand事件填写如下代码
if(e.CommandName == "Delete")
{
string parentid = GridView1.DataKeys[Index].Value.ToString();
删除后绑定
}
jimu8130 2009-03-04
  • 打赏
  • 举报
回复
假如这样赋值的话CommandArgument='<%# DataBinder.Eval(Container,"RowIndex") %>'
那么后台就可以按你那样取值了
j45kp 2009-03-04
  • 打赏
  • 举报
回复
protected void ChildGridView_OnRowEditing(object sender, GridViewEditEventArgs e)
{
int parent_index = (int)Session["sParentGridViewIndex"];
GridViewRow parent_row = ParentGridView.Rows[parent_index];
GridView ChildGridView = (GridView)parent_row.FindControl("ChildGridView");
int child_index = e.NewEditIndex;
ChildGridView.EditIndex = child_index;
Session["sProductID"] = Convert.ToInt32(ChildGridView.DataKeys[child_index].Value);
}
j45kp 2009-03-04
  • 打赏
  • 举报
回复
protected void ParentGridView_RowEditing(object sender, GridViewEditEventArgs e)
{
int parent_index = e.NewEditIndex;
ParentGridView.EditIndex = parent_index;
bindParent();
Session["sCategoryID"] =Convert.ToInt32(ParentGridView.DataKeys[parent_index].Value);
Session["sParentGridViewIndex"] = parent_index;
}
\
jimu8130 2009-03-04
  • 打赏
  • 举报
回复
不好意思,看来是取不到那个index,请看看这个怎么去外层datagrid的行序数
http://www.cnblogs.com/oomusou/archive/2007/06/26/796094.html
pdsnet 2009-03-04
  • 打赏
  • 举报
回复
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
Index = Convert.ToInt16(e.CommandArgument.ToString());//

}
pdsnet 2009-03-04
  • 打赏
  • 举报
回复
To:migercai 这里关键是 index =-1;
migercai 2009-03-04
  • 打赏
  • 举报
回复

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if(e.CommandName == "Delete")
{
Index = Convert.ToInt16(e.CommandArgument.ToString());//我这样写不行我在 前台怎么给 CommandArgument赋值?
Response.Write(e.CommandArgument.ToString().Length);//结果是 :0
}

}

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧