现在的位置: 首页 > 综合 > 正文

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

2012年03月12日 ⁄ 综合 ⁄ 共 1725字 ⁄ 字号 评论关闭
  • 在两个GridView控件之间传值(方法一)

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

<asp:TemplateField HeaderText="地区" SortExpression="Territory">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server"
OnCommand="GridView1_onClick"
CommandArgument='<%# (String)DataBinder.Eval(Container,"DataItem.Territory") %>'
CommandName="TerritoryDrill"
Text='<%# (String)DataBinder.Eval(Container,"DataItem.Territory") %>'></asp:LinkButton>
</ItemTemplate>
<ItemStyle Height="15px" HorizontalAlign="Left" Width="150px" />
</asp:TemplateField>

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的数据源的参数值:

<SelectParameters>
     <asp:ControlParameter ControlID="GridView1" Name="Territory"
         PropertyName="SelectedValue" DefaultValue="" Type="String" />
</SelectParameters>

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

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

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

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

<SelectParameters>
    <asp:SessionParameter Name="EmployeeID" SessionField="EmployeeID"  Type="Int32" />
</SelectParameters>

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中检索相关数据的功能.

抱歉!评论已关闭.