【问题标题】:select column from gridview and pass to variable从gridview中选择列并传递给变量
【发布时间】:2013-01-22 13:57:37
【问题描述】:

下面是我尝试从 10 中选择列数据的代码,但是代码无法正常工作

  string strSuppId = GridView1.SelectedRow.Cells[10].Text;

错误消息:对象引用未设置为对象的实例。

我的标记

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataKeyNames="pProductId" DataSourceID="AccessDataSource1">
    <Columns>
        <asp:BoundField DataField="pProductId" HeaderText="pProductId" 
            InsertVisible="False" ReadOnly="True" SortExpression="pProductId" />
        <asp:BoundField DataField="pProductName" HeaderText="pProductName" 
            SortExpression="pProductName" />
        <asp:BoundField DataField="pProductImage" HeaderText="pProductImage" 
            SortExpression="pProductImage" />
        <asp:BoundField DataField="pProductType" HeaderText="pProductType" 
            SortExpression="pProductType" />
        <asp:BoundField DataField="pProductWeight" HeaderText="pProductWeight" 
            SortExpression="pProductWeight" />
        <asp:BoundField DataField="pProductDesign" HeaderText="pProductDesign" 
            SortExpression="pProductDesign" />
        <asp:BoundField DataField="PProductColor" HeaderText="PProductColor" 
            SortExpression="PProductColor" />
        <asp:BoundField DataField="pProductTransparency" 
            HeaderText="pProductTransparency" SortExpression="pProductTransparency" />
        <asp:BoundField DataField="pProductQuantity" HeaderText="pProductQuantity" 
            SortExpression="pProductQuantity" />
        <asp:BoundField DataField="pProductUnitPrice" HeaderText="pProductUnitPrice" 
            SortExpression="pProductUnitPrice" />
        <asp:BoundField DataField="pSupplierId" HeaderText="pSupplierId" 
            SortExpression="pSupplierId" />
    </Columns>

我的代码文件

protected void btnAddPdt_Click(object sender, EventArgs e)
    {
        if (txtPdtName.Text == "" || ddlPdtType.SelectedItem.Text == "" || txtPrice.Text == "")
        {
            MessageBox.Show("Fields cannot be empty", "Error Message");
        }
        else
        {
            OleDbConnection mDB = new OleDbConnection();
            mDB.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data source="
            + Server.MapPath("~/App_Data/Database.accdb");
            mDB.Open();
            Type csType = this.GetType();
            OleDbCommand cmd;


            string strSuppId = GridView1.SelectedRow.Cells[10].Text;

            string sqlInsert = "INSERT INTO "
                + " Products (pProductName, pProductType, pProductWeight, pProductDesign, pProductColor, pProductTransparency, pProductQuantity, pProductUnitPrice, pSupplierId)"
                + " VALUES (@pdtName, @pdtType, @pdtWt, @pdtDesign, @pdtColor, @pdtTrans, @pdtQty, @pdtPrice, @pSuppId)";

            cmd = new OleDbCommand(sqlInsert, mDB);
            cmd.Parameters.AddWithValue("@pdtName", txtPdtName.Text);
            cmd.Parameters.AddWithValue("@pdtType", ddlPdtType.SelectedItem.Text);
            cmd.Parameters.AddWithValue("@pdtWt", txtPdtWt.Text);
            cmd.Parameters.AddWithValue("@pdtDesign", txtDesign.Text);
            cmd.Parameters.AddWithValue("@pdtColor", txtColor.Text);
            cmd.Parameters.AddWithValue("@pdtTrans", ddlTrans.SelectedItem.Text);
            cmd.Parameters.AddWithValue("@pdtQty", txtQuantity.Text);
            cmd.Parameters.AddWithValue("@pdtPrice", txtPrice.Text);
            cmd.Parameters.AddWithValue("@pSuppId", strSuppId);

            cmd.ExecuteNonQuery();
            mDB.Close();
    }

【问题讨论】:

  • “未按应有的方式工作”并不能完全帮助我们了解正在发生的事情。什么不工作?当它不起作用时会发生什么?当它起作用时应该发生什么?
  • 第 11 列是BoundField 还是TemplateField? (请注意,基于 .NET 的集合为零)
  • @MalcolmNathanielNg:显示网格的 aspx 标记。了解“不工作” 的实际含义也很重要(从不,没有任何借口,用这个词来描述你的问题!)。您想从哪里获取值(例如在事件处理程序、page_load 等中)?
  • 分享你写的代码块...然后很容易帮助...
  • 大家好,刚刚编辑了代码文件是由按钮触发的

标签: asp.net gridview datagridviewcolumn


【解决方案1】:

试试下面的编码...

将变量声明为全局

public string _Data = "";

如下所示编写 Gridview SelectedIndexed 事件

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) {
    string data = "";
    GridViewRow row = GridView1.SelectedRow;
    _Data = row.Cells[10].Text;
}

然后像下面这样更改您的编码

string strSuppId = GridView1.SelectedRow.Cells[10].Text;

to

string strSuppId = _Data

在 Button_Click 之前 Select the Row from GridView... 然后只有它返回 Data....

【讨论】:

  • 呃,什么!?除了获取最后一行的最后一列中的文本之外,这将如何做任何事情?
  • 潘我看不懂下面的代码...(获取所有列值)
  • 该代码用于检索网格视图中的所有列值...它逐行搜索网格视图并获取列值...
  • @pan 我不知道为什么它会因为数据类型不匹配而出错
猜你喜欢
  • 2018-01-07
  • 2018-04-14
  • 1970-01-01
  • 1970-01-01
  • 2011-09-15
  • 2011-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多