繁体   English   中英

在Gridview中签入,单击按钮为文本框分配值

[英]Checked in Gridview, Button Click for Assign Value to textbox

我尝试完成按钮单击的操作,以实现gridview中的选中行,以下是我的asp.net代码

如果单击“编辑”按钮,我想将gridview行,列值分配到其文本框中..怎么用代码解释?

 <form id="form1" runat="server">
<div>
    &nbsp;</div>
    <asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" Width="505px" OnSelectedIndexChanged="GridView_SelectedIndexChanged" >
        <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:CheckBox ID="CheckBox1" runat="server"  />
                </ItemTemplate>
                <EditItemTemplate>
                    &nbsp;
                </EditItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField>
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
                </EditItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField>
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                </EditItemTemplate>
            </asp:TemplateField>
        </Columns>
        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
        <EditRowStyle BackColor="#999999" />
        <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
        <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
        <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
    </asp:GridView>
    &nbsp;<br />
    <br />
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
    &nbsp; &nbsp; &nbsp;<asp:Button ID="Button1" runat="server" Text="Delete" OnClick="Button1_Click" />
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
    <br />
    &nbsp;
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
    <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
</form>

C#

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection("Data source =;Database = ;Integrated security =true");
        SqlCommand cmd = new SqlCommand("select * from Empdetails", con);
        con.Open();

    GridView1.DataSource = cmd.ExecuteReader();
    GridView1.DataBind();
    con.Dispose();
    con.Close();



}
protected void GridView_SelectedIndexChanged(object sender, EventArgs e)
{

}
protected void Button1_Click(object sender, EventArgs e)
{
    {
        foreach (GridViewRow row in GridView1.Rows)
        {
            if ((row.FindControl("CheckBox1") as CheckBox).Checked)
            {
                TextBox1.Text = row.Cells[0].Text;
                TextBox2.Text = row.Cells[1].Text;
                TextBox3.Text = row.Cells[2].Text;
            }
        }
    }
}

}

这里使用Empid是主要的,另外2个是其他列..,但不能正确执行

后面的代码。 我正在创建一个数据集以绑定到gridview并在其中放置一些虚拟值。 如果您不确定如何将数据绑定到gridview,请使用google搜索,这里有很多示例! :)

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            var emps = new DataTable("Employee");
            emps.Columns.Add(new DataColumn() {ColumnName = "EmpId", DataType = Type.GetType("System.Int32")});
            emps.Columns.Add(new DataColumn() {ColumnName = "Name", DataType = Type.GetType("System.String")});
            emps.Columns.Add(new DataColumn() {ColumnName = "Address", DataType = Type.GetType("System.String")});

            var dataSet = new DataSet();
            dataSet.Tables.Add(emps);

            var row = emps.NewRow();
            row["EmpId"] = 1000;
            row["Name"] = "John";
            row["Address"] = "1 Smith St";
            emps.Rows.Add(row);

            GridView1.DataSource = dataSet;
            GridView1.DataBind();
        }
    }

    protected void Button2_Click(object sender, EventArgs e)
    {
        foreach (GridViewRow row in GridView1.Rows)
        {
            if ((row.FindControl("CheckBox1") as CheckBox).Checked)
            {
                TextBox1.Text = row.Cells[1].Text;
                TextBox2.Text = row.Cells[2].Text;
                TextBox3.Text = row.Cells[3].Text;
            }
        }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        throw new NotImplementedException();
    }

这是您的aspx页面的代码

<div>
 <asp:Label ID="Label1" runat="server" Text="Empid" Width="50px"></asp:Label>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
<asp:Label ID="Label2" runat="server" Text="Name" Width="50px"></asp:Label>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<br />
<asp:Label ID="Label3" runat="server" Text="Address" Width="50px"></asp:Label>
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<br />
<br />
<br />
<br />
<asp:GridView ID="GridView" runat="server">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:CheckBox ID="CheckBox1" runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
<br /></div>   <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="update " />  <asp:Button ID="Button2" runat="server" Text="Edit" Width="61px" OnClick="Button2_Click" />

您可以尝试一下,可能是答案。

        for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
        {
        GridViewRow row = GridView1.Rows[i];
        CheckBox Ckbox = (CheckBox)row.FindControl("CheckBox1");
        if (Ckbox.Checked == true)
             {
                 TextBox1.Text = row.Cells[1].Text; 
                 TextBox2.Text = row.Cells[2].Text; 
                 TextBox3.Text = row.Cells[3].Text; 
             }
        }

如果您试图将在其中选中CheckBox的行的GridView(命名为GridView1)单元格值分配给三个文本框,则下面是解决方法。

protected void Button2_Click(object sender, EventArgs e)
        {
            foreach (GridViewRow row in GridView1.Rows)
            {
                if ((row.FindControl("CheckBox1") as CheckBox).Checked)
                {
                    TextBox1.Text = row.Cells[0].Text;
                    TextBox2.Text = row.Cells[1].Text;
                    TextBox3.Text = row.Cells[2].Text;
                }
            }
        }

最重要的是,请在aspx中将GridView命名为“ GridView1”,因为您不能使用ID的类名

我想将“ gridview行值”添加到文本框中,因此该问题没有答案; 分享一些要阅读的内容,对此

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM