【问题标题】:How can I get the row selected in my gridview to display in my text boxes?如何让我的 gridview 中选择的行显示在我的文本框中?
【发布时间】:2021-06-15 16:06:38
【问题描述】:

我有一个Gridview,它只显示数据库表中的某些列。我的GridView 中也有一个选择按钮和删除按钮。

这是GridView的代码

<asp:GridView ID="GridViewClient" runat="server" DataKeyNames="FirstName"
     OnSelectedIndexChanged="GridViewClient_SelectedIndexChanged"
     OnRowDeleting="GridViewClient_RowDeleting">
  <Columns>
     <asp:CommandField HeaderText="Update" ShowSelectButton="True" />
     <asp:CommandField HeaderText="Delete" ShowDeleteButton="True" />
  </Columns>
</asp:GridView>

然后,当用户选择select 按钮时,它应该在文本框中显示整个表格。

这是select按钮的代码:

protected void GridViewClient_SelectedIndexChanged(object sender, EventArgs e)
{
    EditClient.Visible = true;
    GridViewRow row = GridViewClient.SelectedRow;
    string constr = @"string";
    using (SqlConnection con = new SqlConnection(constr))
    {
        using (SqlCommand cmd = new SqlCommand("SELECT * FROM tbl_newclient"))
        {
            cmd.CommandType = CommandType.Text;
            cmd.Connection = con;
            con.Open();
            using (SqlDataReader sdr = cmd.ExecuteReader())
            {
                sdr.Read();
                txtFirstName.Text = sdr["FirstName"].ToString();
                txtLastName.Text = sdr["LastName"].ToString();
                txtContactNumber.Text = sdr["ContactNumber"].ToString();
                txtEmailAddress.Text = sdr["EmailAddress"].ToString();
                txtAddress.Text = sdr["Address"].ToString();
                txtRestrictions.Text = sdr["Restrictions"].ToString();
                txtThirdPartySupport.Text = sdr["ThirdPartySupport"].ToString();
                txtBasicNotes.Text = sdr["BasicNotes"].ToString();
            }
            con.Close();
        }
    }
    Update.Visible = true;
}

texboxes 在页面加载时隐藏,仅在select 上可见 现在发生的情况是,当我单击任意行上的 select 按钮时,GridView 的第一行会显示在文本框中?

我不确定我在这里做错了什么?

谢谢

【问题讨论】:

    标签: c# sql asp.net gridview


    【解决方案1】:

    我不完全理解您的要求,因为我看不到您的所有代码,但我认为问题可能是您仅使用数据阅读器读取第一行。你可以试试这样的

    using (SqlDataReader sdr = cmd.ExecuteReader())
    {
       if (sdr.HasRows)
       {
          while (sdr.Read())
          {
             //I'm not sure what you want to do here? i've just addede to the existing text in the textbox
             txtFirstName.Text += sdr["FirstName"].ToString();
             txtLastName.Text += sdr["LastName"].ToString();
             txtContactNumber.Text += sdr["ContactNumber"].ToString();
             txtEmailAddress.Text += sdr["EmailAddress"].ToString();
             txtAddress.Text += sdr["Address"].ToString();
             txtRestrictions.Text += sdr["Restrictions"].ToString();
             txtThirdPartySupport.Text += sdr["ThirdPartySupport"].ToString();
             txtBasicNotes.Text += sdr["BasicNotes"].ToString();
          }
       }
    }
    

    【讨论】:

      【解决方案2】:

      我猜你的Gridview 中有tbl_newclient 表的primarykey。然后选择从gridview 获取主键并在sql query 上附加一个where 条件,然后它应该返回所需的数据。

          protected void GridViewClient_SelectedIndexChanged(object sender, EventArgs e)
          {
           EditClient.Visible = true;
           var primarykey = GridViewClient.SelectedRow.Cells[0].Text; // 0 cell index primary key
           string constr = @"string";
           using (SqlConnection con = new SqlConnection(constr))
           {
              using (SqlCommand cmd = new SqlCommand("SELECT * FROM tbl_newclient where yourprimarykey=@primarykey"))
              {
                  cmd.Parameters.AddWithValue("@primarykey", primarykey);
                  cmd.CommandType = CommandType.Text;
                  cmd.Connection = con;
                  con.Open();
                 using (SqlDataReader sdr = cmd.ExecuteReader())
                 {
                   if (sdr.HasRows)
                    {
                       while (sdr.Read())
                         {
                          txtFirstName.Text = sdr["FirstName"].ToString();
                          txtLastName.Text = sdr["LastName"].ToString();
                          txtContactNumber.Text = sdr["ContactNumber"].ToString();
                          txtEmailAddress.Text = sdr["EmailAddress"].ToString();
                          txtAddress.Text = sdr["Address"].ToString();
                          txtRestrictions.Text = sdr["Restrictions"].ToString();
                          txtThirdPartySupport.Text = sdr["ThirdPartySupport"].ToString();
                          txtBasicNotes.Text = sdr["BasicNotes"].ToString();
                         }
                    }
               }
               con.Close();
              }
          }
          Update.Visible = true;
          }
      

      【讨论】:

      • 您好,感谢您的解释,但现在发生的情况是出现了文本框,但其中现在有来自所选 gridview 行的数据?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-06-23
      • 2016-09-07
      • 1970-01-01
      • 1970-01-01
      • 2019-12-05
      • 1970-01-01
      • 2013-08-28
      相关资源
      最近更新 更多