访问GridView单元格值

5

我正在尝试访问第一个单元格的整数值,但是出现了以下错误:

无法将类型为'System.Web.UI.WebControls.DataControlFieldCell'的对象转换为类型'System.IConvertible'。

而我在该单元格中存储的值是像810这样的ID

我的代码:

int myID = Convert.ToInt32(GridView1.Rows[rowIndex].Cells[0]);
4个回答

6

Cells[0] 返回的是 DataControlFieldCell 对象,而非单元格的值。
请使用单元格的 Text 属性。


好的,那个对我没有帮助,我应该用什么呢?我是C#的新手。 - user710502
3
GridView1 的第 rowIndex 行第 0 列的文本转换为整数,使用 Convert.ToInt32() - SLaks
该值为空,不确定为什么无法找到该值,它以 "" 的形式出现。 - user710502
@user710502 - 我猜GridView的第一列包含LinkButton或其他类似的控件。 - KV Prajapati

4
GridView1.Rows[rowIndex].Cells[0].Text

--or--

GridView1.Rows[rowIndex].Cells[0].Value

随着时间的推移,微软引入这些愚蠢的模糊性,使得程序员的生活更加艰辛。


0
推荐从GridView/FormView中检索单元格值的方法是使用ExtractValuesFromCell()方法。以下是一个示例:
foreach(var row in GridView.Rows) 
{
    // retrieve all cell values in a row as a ordered dictionary.
    IOrderedDictionary cellValues = new OrderedDictionary();
    foreach(DataControlFieldCell cell in row.Cells)
    {      
            cell.ContainingField.ExtractValuesFromCell(cellValues, cell, row.RowState, true);
    }

    // now do something with the cellValues for e.g read the columns value
    // like - cellValues["EmployeeName"]
}

返回的值是字符串,可以通过System.Convert类进行转换。

具体来说,这种方法提供了在GridView最初绑定/创建时存储的旧值,但不提供在更新时键入到输入框中的新值。 - Bbb

0

试试这两个代码都是有效的

 int SB = Convert.ToInt32(gdTest.SelectedRow.Cells[1].Text);

              ---------OR-------

int AS = Convert.ToInt32(gdTest.Rows[1].Cells[1].Text);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接