Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从选定行gridview检索值_C#_Asp.net_Gridview_Textbox - Fatal编程技术网

C# 从选定行gridview检索值

C# 从选定行gridview检索值,c#,asp.net,gridview,textbox,C#,Asp.net,Gridview,Textbox,我将一些数据绑定到gridview,想知道是否可以检索选定行中的值,并将这些值插入一系列文本框或标签中 是的,这是可能的。使用FindControl方法 复制品 正如@codingbiz所说:您可以使用FindControl和TemplateField 例如: EditGridView.aspx: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="EditGridView.aspx.cs" Inherits="Q

我将一些数据绑定到gridview,想知道是否可以检索选定行中的值,并将这些值插入一系列文本框或标签中

是的,这是可能的。使用
FindControl
方法

复制品


正如@codingbiz所说:您可以使用
FindControl
TemplateField

例如:

EditGridView.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="EditGridView.aspx.cs" Inherits="Q11874496WebApp.EditGridView" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
            <Columns>
                <asp:CommandField ShowSelectButton="True" />
                <asp:TemplateField HeaderText="Id" SortExpression="Id">
                    <ItemTemplate>
                        <asp:Label ID="LblId" runat="server" Text='<%# Bind("Id") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Name" SortExpression="Name">
                    <ItemTemplate>
                        <asp:Label ID="Lblname" runat="server" Text='<%# Bind("Name") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Phone" SortExpression="Phone">
                    <ItemTemplate>
                        <asp:Label ID="LblPhone" runat="server" Text='<%# Bind("Phone") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    </div>
    &nbsp;Id:
    <asp:TextBox ID="TxtId" runat="server"></asp:TextBox>
    &nbsp;Name:
    <asp:TextBox ID="TxtName" runat="server"></asp:TextBox>
    &nbsp;Phone:
    <asp:TextBox ID="TxtPhone" runat="server"></asp:TextBox>
    <asp:Button ID="BtnUpdate" runat="server" OnClick="BtnUpdate_Click" Text="Update" />
    </form>
</body>
</html>

完整来源:

谢谢!我将对此进行研究。那么FindControl是否真的可以找到gridview中每个单元格的单个值呢?您可以在行或单元格上使用它。e、 g.
row.FindControl(“controlID”)
row.Cells[0]。FindControl(“coontrolID”)
。获取控件
TextBox txtName=(TextBox)行。FindContro(“txtName”)
要查找单元格值,我认为它是
行。单元格[0]。Text
。请查证
public partial class EditGridView : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
            if (this.MyDataList.Count == 0)
            {
                this.populateData();
            }
            this.GridView1.DataSource = this.MyDataList;
            this.GridView1.DataBind();
        }
    }

    /// <summary>
    /// Data for the GridView. Encapsulates a list that will be in session.
    /// </summary>
    public IList<MyDataPoco> MyDataList
    {
        get
        {
            if (this.Session["MyDataList"] == null)
                this.Session["MyDataList"] = new List<MyDataPoco>();
            return (IList<MyDataPoco>)this.Session["MyDataList"];
        }
    }

    /// <summary>
    /// Creates a list of 10 items.
    /// </summary>
    private void populateData()
    {
        for (int i = 0; i < 10; i++)
        {
            this.MyDataList.Add(
                new MyDataPoco()
                {
                    Id = i.ToString(),
                    Name = "Name " + i,
                    Phone = i + "" + i + "" + i + "." + i + "" + i + "" + i + "" + i + ""
                });
        }
    }

    /// <summary>
    /// Here is the way you can get values from GridView.
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {
        GridViewRow row = this.GridView1.SelectedRow;
        Label LblId = (Label)row.FindControl("LblId");
        Label LblName = (Label)row.FindControl("LblName");
        Label LblPhone = (Label)row.FindControl("LblPhone");

        this.TxtId.Text = LblId.Text;
        this.TxtName.Text = LblName.Text;
        this.TxtPhone.Text = LblPhone.Text;
    }

    /// <summary>
    /// Updates the data in the GridView.
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void BtnUpdate_Click(object sender, EventArgs e)
    {
        if (this.GridView1.SelectedIndex < 0)
        {
            this.ClientScript.RegisterStartupScript(
                this.GetType(),
                "alert",
                "alert('Select before...');", true);
        }
        else
        {
            MyDataPoco myDateItem = this.MyDataList[this.GridView1.SelectedIndex];
            myDateItem.Id = this.TxtId.Text;
            myDateItem.Name = this.TxtName.Text;
            myDateItem.Phone = this.TxtPhone.Text;

            this.GridView1.DataSource = this.MyDataList;
            this.GridView1.DataBind();
        }
    }
}
public class MyDataPoco
{
    public String Id { get; set; }
    public String Name { get; set; }
    public String Phone { get; set; }
}