2012-02-27 89 views
0

的一列的值,我列的GridView和一个具有使用LinkButtonButtonField) 我可以得到一个特定的细胞在我的网格就好了价值TemplateField。使用:获取通过使用ButtonField字段

GridViewRow row = GridView1.SelectedRow; 

lblSalesmanCustomers.Text = row.Cells[2].Text; 

我然后显示从细胞中Label文本。

但是我不能让这与ButtonField模板工作。它只适用于非模板列。

如何在使用ButtonField/TemplateField的列中获取特定单元格的值?

编辑:这是我的按钮域代码我的GridView中: <asp:ButtonField DataTextField="Customer" HeaderText="Customer" ButtonType="Link" CommandName="Select" />

而且,这是在这种情况下发生:

protected void gvManagerCustomers_SelectedIndexChanged(object sender, EventArgs e) 
+0

你能提供你的GridView的aspx代码? – 2012-02-27 21:51:22

+0

在网站上有26个问题,您应该知道如何在帖子中设置代码的格式。 (*不太明显,不要把签名放在最后。*) – jadarnel27 2012-02-27 22:01:33

+0

我不知道如何格式化我的代码。不熟悉标记。如果我在任何结尾处留下我的名字,你会关心什么? – 2012-02-28 16:34:04

回答

1

我知道有与HyperLinkField字段和ButtonField字段的问题,但有一个变通。假设您是基于名为ButtonNames的列来绑定buttonfield文本,并在该列中包含所有名称,例如“button bob”,“button jerry”等。在您的GridView中,添加一个不可见列作为第一列,将其值作为ButtonNames进行绑定。通过设置其中一个可见性属性使其不可见。忘记了我的头顶是什么。然后,当您想要获取buttonfield的文本时,只需从该无形列中获取数据即可,相反,这适用于超链接。

编辑:这里的一些代码。

<asp:BoundColumn ItemStyle-HorizontalAlign="Left" DataField="ButtonNames" SortExpression="ButtonNames" HeaderText="TriageId" Visible="false" ReadOnly="true"></asp:BoundColumn> 

然后你通过字符串s = e.Item.Cells检索[0]。文本其中e是一个DataGridCommandEventArgs或东西的性质。

+0

这不起作用。我不得不使用莱昂的建议。那个给了我想要的东西。 – Echiban 2015-06-03 19:55:10

0

将会有一个控制集合中的细胞 - 你可能能够在那里访问它。

虽然一个简单的方法是使用类似:

Label l = row.FindControl("myControlId"); 

编辑:真上面的确切方法是行不通的 - 但你可以使用这些控件,下面做工作,请注意什么我们在这里做的事情很糟糕(但是为了方便起见,我们使用的是GridView)。

protected void gvManagerCustomers_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    var x = ((sender as GridView).SelectedRow.Cells[0].Controls[0] as LinkButton).Text; 
} 

为了算出这个设立在处理方法调试环境,断点然后通过类层次结构向下钻取。调试器是我们的朋友;)

编辑只是提到显而易见的 - 列是硬编码在这里 - 你可能需要改变它。

+0

我试过这种方法。但是出于某种原因,在Datagridview中不允许或支持在一个控件中使用一个ID。 – 2012-02-28 16:35:36

2

看看var Button = row.Cells["Customer"].Controls[0];将检索您需要的按钮。

您可能需要将其转换为正确的类型。

+1

这应该是正确的答案。感谢Leon。 – Echiban 2015-06-03 19:55:39

相关问题