ASP.Net常见技术疑难解析(二)

来源:互联网 发布:临沂淘宝仓库招聘 编辑:程序博客网 时间:2024/05/18 00:58
  • 在两个GridView控件之间传值(方法一)

1,设置GridView1中做为参数值传递的列为模板列:



OnCommand="GridView1_onClick" 
CommandArgument='<%# (String)DataBinder.Eval(Container,"DataItem.Territory") %>'
CommandName="TerritoryDrill"
Text='<%# (String)DataBinder.Eval(Container,"DataItem.Territory") %>'>


2,获得GridView1中点击的行索引号:

protected void GridView1_onClick(object sender, CommandEventArgs e)
    {
        string TerritoryName = e.CommandArgument.ToString().Trim();
        LinkButton lb = (LinkButton)sender;
        DataControlFieldCell dcfc = (DataControlFieldCell)lb.Parent;
        GridViewRow gvr = (GridViewRow)dcfc.Parent;
        GridView1.SelectedIndex = gvr.RowIndex;
    }

3,设置GridView2的数据源的参数值:


              PropertyName="SelectedValue" DefaultValue="" Type="String" />

这样当用户点击GridView1中的某行中的LinkButton控件,就会触发GridView1_onClick事件,该事件可以获得点击行的索引号,当GridView1.SelectedIndex值发生变化时,就会触发GridView2控件的DataBound事件,并将点击行的索引号传递给GridView2的数据源的参数.这样就实现了点击GridView1,在GridView2中检索相关数据的功能.

  • 在两个GridView控件之间传值(方法二)

利用Session变量实现两个控件之间的传值.

设置FormView1的数据源的参数值:


   

protected void GridView2_onClick(object sender, CommandEventArgs e)
{
    string[] TerritoryName = e.CommandArgument.ToString().Trim();
    Session["EmployeeID"] = TerritoryName;
    FormView1.DataBind();
}

当点击GridView2中的行中的传值列时,取出行中的LinkButton控件的参数并将它保存到Session["EmployeeID"]中,并触发FormView1的DataBound事件.从而实现点击GridView2,在FormView1中检索相关数据的功能.