【问题标题】:Populate Form on new page from GridView Select从 GridView 选择在新页面上填充表单
【发布时间】:2013-07-30 23:59:36
【问题描述】:

我填充了我的gridview,我想用gridview 值以及绑定到该记录但不在gridview 上的值填充一个表单。我会发布我到目前为止的代码。我知道如何在同一个表单中填充文本框,但我需要使用这些值启动一个新表单。

数据层

class DALCustomers
{
    DALConnection SBAConnection;

    public DALCustomers()
    {
        SBAConnection = new DALConnection();
    }

    DataSet GetCustomersDataset = new DataSet();
    SqlCommand Customers = new SqlCommand();
    Customers.CommandText = "GetCustomers";
    Customers.CommandType = CommandType.StoredProcedure;
    Customers.Connection = SBAConnection.GetConnection();

    SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter(Customers);
    mySqlDataAdapter.Fill(GetCustomersDataset);
    return GetCustomersDataset;
}

业务层

class Customer
{
    public DataSet GrabCustDataset()
    {
        DataSet ds = new DataSet();
        ds = new DALCustomers().GetCustomers();
        return ds;
    }
}

界面层

namespace Customer_Database
{
    public partial class frmCustomers : Form
    {
        public frmCustomers()
        {
            InitializeComponent();
        }

        private void PopulateCustomerGrid(DataSet CustGrid)
        {
            dgCustomers.DataSource = null;
            dgCustomers.DataSource = CustGrid.Tables[0];
        }

        private void frmCustomers_Load(object sender, EventArgs e)
        {
            DataSet ds = new Customer().GrabCustDataset();
            PopulateCustomerGrid(ds);

        }

        private void dgCustomers_DoubleClick(object sender, EventArgs e)
        {

            frmCustDetails frmCustDetails = new frmCustDetails();
            frmCustDetails.Show();

            // will fill TB for selected row
            //foreach (DataGridViewRow row in dgCustomers.SelectedRows)
            //{
            //    txtTest.Text = row.Cells[2].Value.ToString();
            //}

        }
    }
}

【问题讨论】:

  • 你有想过这个吗?
  • 您需要将所选行的主键传递给新表单。使用 PK 从数据库中提取记录并填充。

标签: c# forms datagrid populate


【解决方案1】:

如果我正确理解您的问题,您希望从包含数据列表的主页转到包含该 GridView 中选定行的数据(可能已展开)的详细信息页面。

为此,您可以设置您的详细信息页面以从 QueryString 读取数据的键 (id),然后查询您的 DAL 以获取完整的详细信息并显示它们。

在您的主页上,您将连接到 GridView 的 OnSelectedIndexChanged,从事件 args 中获取 DataKey,然后对您的详细信息页面执行 Response.Redirect,在 QueryString 中传递行 ID。

要从 GridView 获取数据,请确保在 ASPX 中将 GridView 的 DataKeyNames 属性设置为 Customer 类的键。

然后处理 OnSelectedIndexChanged 事件,在代码隐藏中您将可以访问 GridView 的 SelectedIndex。您可以使用它通过以下代码进入 DataKeys:

var dataKey = GridView.DataKeys[GridView.SelectedIndex].Value.ToString();

然后你会打电话给

Response.Redirect(string.Format("Details.aspx?CustomerId={0}", dataKey));

【讨论】:

  • 是的,这就是重点,如果您能指出我正确的方向,只需从 gridview 值填充表单,那就太好了:)。如果有帮助,这也是一个严格的 c# 程序
  • 用一些 sn-ps 更新了我的答案。
猜你喜欢
  • 1970-01-01
  • 2018-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多