从GridView Select在新页面上填充表单

时间:2013-07-30 15:26:23

标签: c# forms datagrid populate

我已经填充了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;
}

BusinessLayer

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();
            //}

        }
    }
}

1 个答案:

答案 0 :(得分:0)

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

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

在您的主页面上,您将连接到GridView的OnSelectedIndexChanged,从事件args获取DataKey,然后对您的详细信息页面执行Response.Redirect,并在其中传入行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));