1

我填充了我的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();
            //}

        }
    }
}
4

1 回答 1

0

如果我正确理解您的问题,您希望从包含数据列表的主页转到包含该 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));
于 2013-07-30T15:30:35.700 回答