【问题标题】:How Do I Transfer Grid view values to next page如何将网格视图值传输到下一页
【发布时间】:2015-04-08 13:53:10
【问题描述】:

如何将网格视图值传输到下一页。网格视图包含一个文本框 (txtItemGroup),其值必须由用户动态输入,而不是从数据库中输入。

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" HorizontalAlign="Center">
            <Columns>
                <asp:TemplateField HeaderText="Item Name">
                    <ItemTemplate>
                        <asp:Label ID="lblName" runat="server" Text='<%# Eval("TestItemName") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Items Group">
                    <ItemTemplate>
                        <asp:Label ID="lblGroup" runat="server" Text='<%# Eval("TestItemGroup") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Group">
                    <ItemTemplate>
                        <asp:TextBox ID="txtItemGroup" runat="server"></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Item Values">
                    <ItemTemplate>
                        <asp:Label ID="lblItemValue" runat="server" Text='<%# Eval("TestItemValues") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Default Values">
                    <ItemTemplate>
                        <asp:Label ID="lblDefaultValues" runat="server" Text='<%# Eval("DefaultValues") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

【问题讨论】:

    标签: c# asp.net gridview


    【解决方案1】:

    在您的 GridView 的 RowCommand 事件中输入以下代码:

    if (e.CommandName == "Send")
    {
        TextBox txt = (TextBox)GridView1.FindControls("txtItemGroup");
        Session["ItemGroup"] = txt.Text;    
    }
    

    除此之外,在您的 GridView 的 ItemTemplate 中放置一个 Button 或 LinkBut​​ton 以发送相应文本框的值,就像您放置一个 TextBox 一样,并将其在 .aspx 页面中的 CommandName 属性设置为:

    <asp:Button id="btnSend" runat="server" Text = ">" commandName="Send"/>
    

    然后在要查看TextBox值的页面的Page_Load事件中:

    if (!IsPostback)
    {
        Label1.Text = Session["ItemGroup"].ToString();
        //or
        Label1.Text = (String)Session["ItemGroup"];
    }
    

    【讨论】:

    • @Shah Abdul Latif:谢谢.. 它给出了以下错误。当前上下文中不存在名称“txtItemGroup”
    • 它显示如下:GridView 不包含“FindControls”的定义,并且没有扩展方法“FindControls”接受“System.Web.UI.WebControls.GridView”类型的第一个参数找到(您是否缺少 using 指令或程序集引用?)
    • 给出您的 GridView 的名称,例如如果gridView的名字是GridView1那么写成:TextBox txt = (TextBox)GridView1.FindControls("txtItemGroup");并在 FindControl 方法中给出文本框的名称,您已将其放入 gridView 的项目模板中,作为字符串。
    • @Shah Abdul Latif:谢谢。是的,我明白了。但是gridview中的每一行文本框我都需要单击放置在gridview上的按钮。但是是否有任何其他解决方案可以在gridview之外执行相同的操作,即单击按钮。 in (protected void btnSend1_Click(object sender, EventArgs e))
    【解决方案2】:

    试试这个:-

    在该文本框下方添加一个按钮,如下所示:-

    <asp:Button ID="btnsend" Text="Send" runat="server" CommandName="Send" />
    

    在 RowCommand 事件中这样写:-

    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Send")
            {
                GridViewRow row = (GridViewRow)((Control)e.CommandSource).NamingContainer;
                TextBox TextBox1 = row.FindControl("txtItemGroup") as TextBox;
                Response.Redirect("yourasppage.aspx?txt=" + TextBox1.Text);
            }
        }
    

    在 `yourasppage.aspx' 的页面加载时使用此代码

    string txtval = Request.QueryString["txt"];

    希望这会有所帮助

    【讨论】:

    • @sharique ansari:谢谢.. 使用 RowCommand 没有问题。我只需要在 Grid 视图之外的按钮单击中进行相同的操作。
    • @Nani 你需要找到那个文本框所在的行,所以你可以使用 GridView1.Rows[index].FindControl
    • @Nani 所以我的建议是在更改时为该文本框创建一个行命令并获取行索引,您可以将其存储在会话中并在按钮单击时使用该索引
    • 要获取所有行,您可以使用 for 循环 for(int i=0;i
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多