C# 获取GridView行的单元格值
我正在使用GridView-C# 获取GridView行的单元格值,c#,winforms,gridview,C#,Winforms,Gridview,我正在使用GridView-AutoGenerateSelectButton=“True”选择行,以获取第1列单元格值 GridViewRow row = dgCustomer.SelectedRow; TextBox1.Text = row.RowIndex.ToString(); 我试过: GridViewRow row = dgCustomer.SelectedRow; TextBox1.Text = "Cell Value" + row.Cells[1].Text + ""; 它只写
AutoGenerateSelectButton=“True”
选择行,以获取第1列单元格值
GridViewRow row = dgCustomer.SelectedRow;
TextBox1.Text = row.RowIndex.ToString();
我试过:
GridViewRow row = dgCustomer.SelectedRow;
TextBox1.Text = "Cell Value" + row.Cells[1].Text + "";
它只写“单元格值”,而不写其他内容
我最终能够得到行数(索引),但不能得到单元格值
GridViewRow row = dgCustomer.SelectedRow;
TextBox1.Text = row.RowIndex.ToString();
我试过:
TextBox1.Text = dgCustomer.Rows[row.RowIndex].Cells[1].Text;
并且仍然返回索引行
还有其他建议吗?
谢谢大家! 尝试将代码更改为
// Get the currently selected row using the SelectedRow property.
GridViewRow row = dgCustomer.SelectedRow;
// And you respective cell's value
TextBox1.Text = row.Cells[1].Text
更新:(根据我的评论)
如果您试图获取的全部内容都是选定行的主键值,则另一种方法是设置
datakeynames=“yourprimarykey”
对于gridview定义,可以从下面的代码中访问它
TextBox1.Text = CustomersGridView.SelectedValue.ToString();
我建议您在模板字段中使用HiddenField使用FindControl来查找此字段 即: ASPX Windows窗体迭代技术
您是否尝试过
单元格[0]
?记住索引从0开始,而不是从1开始。在上面的Dennis R答案上展开。。。
string id;
foreach (GridViewRow rows in grd.Rows)
{
TextBox lblStrucID = (TextBox)rows.FindControl("grdtext");
id=lblStrucID.Text
}
这将获得基于标题文本的值(因此您不需要知道哪个列…尤其是当其动态变化时)
在SelectedIndexChange上设置会话变量的示例
protected void gvCustomer_SelectedIndexChanged(object sender, EventArgs e)
{
int iCustomerID = Convert.ToInt32(Library.gvGetVal(gvCustomer, "CustomerID"));
Session[SSS.CustomerID] = iCustomerID;
}
public class Library
{
public static string gvGetVal(GridView gvGrid, string sHeaderText)
{
string sRetVal = string.Empty;
if (gvGrid.Rows.Count > 0)
{
if (gvGrid.SelectedRow != null)
{
GridViewRow row = gvGrid.SelectedRow;
int iCol = gvGetColumn(gvGrid, sHeaderText);
if (iCol > -1)
sRetVal = row.Cells[iCol].Text;
}
}
return sRetVal;
}
private static int gvGetColumn(GridView gvGrid, string sHeaderText)
{
int iRetVal = -1;
for (int i = 0; i < gvGrid.Columns.Count; i++)
{
if (gvGrid.Columns[i].HeaderText.ToLower().Trim() == sHeaderText.ToLower().Trim())
{
iRetVal = i;
}
}
return iRetVal;
}
}
protectedvoid gvCustomer\u SelectedIndexChanged(对象发送方,事件参数e)
{
int-icCustomerId=Convert.ToInt32(Library.gvGetVal(gvCustomer,“CustomerID”);
会话[SSS.CustomerID]=ICCustomerID;
}
公共班级图书馆
{
公共静态字符串gvGetVal(GridView gvGrid,字符串sHeaderText)
{
string sRetVal=string.Empty;
如果(gvGrid.Rows.Count>0)
{
如果(gvGrid.SelectedRow!=null)
{
GridViewRow行=gvGrid.SelectedRow;
int iCol=gvGetColumn(gvGrid,sHeaderText);
如果(iCol>-1)
sRetVal=row.Cells[iCol].Text;
}
}
返回sRetVal;
}
私有静态int gvGetColumn(GridView gvGrid,字符串sHeaderText)
{
int-iRetVal=-1;
对于(int i=0;i
我和你有同样的问题。我发现,当我在GridView中使用BoundField
标记来显示数据时。行.Cells[1].Text
正在以下位置工作:
GridViewRow row = dgCustomer.SelectedRow;
TextBox1.Text = "Cell Value" + row.Cells[1].Text + "";
但当我使用TemplateField
标记显示如下数据时:
<asp:TemplateField HeaderText="料號">
<ItemTemplate>
<asp:Label ID="Part_No" runat="server" Text='<%# Eval("Part_No")%>' ></asp:Label>
</ItemTemplate>
<HeaderStyle CssClass="bhead" />
<ItemStyle CssClass="bbody" />
</asp:TemplateField>
我使用控件
属性查找用于显示数据的标签
控件,您可以找到自己的控件。当您找到它并转换为正确的类型对象时,您可以提取文本等。例:
string showText = lbCod.Text;
参考:
我在命名列中查找一个整数值,因此我执行了以下操作:
int index = dgv_myDataGridView.CurrentCell.RowIndex;
int id = Convert.ToInt32(dgv_myDataGridView["ID", index].Value)
这样做的好处是,列可以位于栅格视图中的任何位置,并且仍然可以获得值
干杯试错。尝试更改索引,直到得到所需的结果。单元格[1]、单元格[2]等等……我尝试将单元格[6]和所有单元格都提供给我行索引,而不是单元格的值。还有其他建议吗?非常感谢。您可以在这里发布一些代码,以便我们知道您试图从哪种类型的单元格中提取值吗?您在
单元格[1]
中真的有值吗?我假设我有一个值,因为是第1列。不确定为什么您的所有单元格值都为空。或者,您可以为gridview设置datakeynames=“yourprimarykey”
,并访问键值,如TextBox1.Text=CustomerGridView.SelectedValue.ToString()
Dennis正在工作:)是的,我非常激动,请更改之前的答案,这样我就可以给您评分了。天哪,你不知道你刚从我肩上卸下了多大的压力@莉莉很高兴它现在起作用了。我已经用另一个代码更新了我的答案。这是一个窗口的表单响应,而不是ASP.net,这是Gridview的功能is@Nick罗伯茨:这对我的Windows窗体很有帮助。非常感谢你。
Label lbCod = GridView1.Rows["AnyValidIndex"].Cells["AnyValidIndex"].Controls["AnyValidIndex"] as Label;
string showText = lbCod.Text;
int index = dgv_myDataGridView.CurrentCell.RowIndex;
int id = Convert.ToInt32(dgv_myDataGridView["ID", index].Value)