使用 LinkButton 单元格从 GridView 行中提取文本
Extract Text from a GridView row with LinkButton Cells
我正在尝试从类型为 -
的 Gridview 行中提取文本
| text1 | text1 | LinkButtonText3 | text4 |
我使用相同的代码块从每一行单元格中提取文本,但未能获得 LinkButtonText3
,因为它的文本字段具有 null
值。
for (int i= 0; colIdx < gv.Columns.Count; i++) {
dict.Add(arr[i], row.Cells[i].Text);
}
此外,我尝试格式化行控件并更改具有 LinkButton 控件的单元格,但没有成功
/*formatRow(row in gv.Rows) called this method before the previous for loop executes; */
static void formatRow(Control c)
{
for (int i = 0; i < c.Controls.Count; i++)
{
Control curr = c.Controls[i];
if (curr is LinkButton)
{
c.Controls.Remove(curr);
c.Controls.AddAt(i, new LiteralControl((curr as LinkButton).Text));
}
}
}
但这没有成功。我正在尝试找出一种方法来格式化 LinkButtonCell 并通过对行中所有单元格的一致引用来访问它的文本。 (row.Cells[i].Text
)
在按钮单击事件中执行此操作。
首先我们得到按钮发送者
Button YourButtonHere = (Button)sender;
然后我们抓取按钮被点击的行。
GridViewRow gvr = (GridViewRow)YourButtonHere.NamingContainer;
然后我们制作一个标签,我们在其中存储您的行的标签,您可以对网格中的所有标签执行此操作。
图片 ID_Label_Item 是您的网格的标签,您可以在其中显示值。
Label ID_Label_Item = (Label)gvr.FindControl("ID_Label_Item");
通过您创建的 ID_Label_Item,您可以在单击按钮的特定行中获得信息,您可以自由地对 gridview 的所有字段执行此操作。
祝你有美好的一天。希望我能帮到你。
不清楚您是在寻找点击事件,还是在点击 link 按钮时寻找 运行 代码(并且不确定为什么标准 ASP.NET 按钮没有被用在这里???)。
无论如何,这是怎么回事?
对于数据绑定和默认(自动生成列),这些值和列放置在 .cells[]
集合中。
但是,对于任何模板化控件,您都必须使用查找控件。
(实际上 - 它至少会对 post 几行 gridview 标记有所帮助)。
至于格式化 gridview,我非常非常建议您使用行数据绑定事件。这有 100 多个原因,但一个真正重要的原因是您不仅有 gridview 行,而且还有用于绑定的数据行(这意味着您可以使用数据源中的列甚至不显示在网格中——通常这些额外的列对于格式化您显示的 columns/data 非常方便。并且通过使用行数据绑定事件,您也不必编写额外的循环来格式化。
无论如何,假设您的网格视图具有模板化字段,可以这样说:
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server">LinkButton</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
然后一个标准循环代码 get/use/have/change/format/play/have 在每个网格行的处理循环中使用 link 按钮很有趣?
这个:
foreach(GridViewRow gvR in GridView1.Rows)
{
LinkButton lBtn = (LinkButton)gvR.FindControl("LinkButton1");
if (lBtn.Text == "test")
{
// bla bla bla
}
}
所以自动生成列或数据绑定列?它们出现在 cells[]
集合中。但是,文本框、按钮、链接按钮等标准控件无疑会按照上述方式放入网格中(在 templateField 块中,并且按照上述方式 fetched/used 和 findcontrol。
我正在尝试从类型为 -
的 Gridview 行中提取文本| text1 | text1 | LinkButtonText3 | text4 |
我使用相同的代码块从每一行单元格中提取文本,但未能获得 LinkButtonText3
,因为它的文本字段具有 null
值。
for (int i= 0; colIdx < gv.Columns.Count; i++) {
dict.Add(arr[i], row.Cells[i].Text);
}
此外,我尝试格式化行控件并更改具有 LinkButton 控件的单元格,但没有成功
/*formatRow(row in gv.Rows) called this method before the previous for loop executes; */
static void formatRow(Control c)
{
for (int i = 0; i < c.Controls.Count; i++)
{
Control curr = c.Controls[i];
if (curr is LinkButton)
{
c.Controls.Remove(curr);
c.Controls.AddAt(i, new LiteralControl((curr as LinkButton).Text));
}
}
}
但这没有成功。我正在尝试找出一种方法来格式化 LinkButtonCell 并通过对行中所有单元格的一致引用来访问它的文本。 (row.Cells[i].Text
)
在按钮单击事件中执行此操作。 首先我们得到按钮发送者
Button YourButtonHere = (Button)sender;
然后我们抓取按钮被点击的行。
GridViewRow gvr = (GridViewRow)YourButtonHere.NamingContainer;
然后我们制作一个标签,我们在其中存储您的行的标签,您可以对网格中的所有标签执行此操作。 图片 ID_Label_Item 是您的网格的标签,您可以在其中显示值。
Label ID_Label_Item = (Label)gvr.FindControl("ID_Label_Item");
通过您创建的 ID_Label_Item,您可以在单击按钮的特定行中获得信息,您可以自由地对 gridview 的所有字段执行此操作。 祝你有美好的一天。希望我能帮到你。
不清楚您是在寻找点击事件,还是在点击 link 按钮时寻找 运行 代码(并且不确定为什么标准 ASP.NET 按钮没有被用在这里???)。
无论如何,这是怎么回事?
对于数据绑定和默认(自动生成列),这些值和列放置在 .cells[]
集合中。
但是,对于任何模板化控件,您都必须使用查找控件。 (实际上 - 它至少会对 post 几行 gridview 标记有所帮助)。
至于格式化 gridview,我非常非常建议您使用行数据绑定事件。这有 100 多个原因,但一个真正重要的原因是您不仅有 gridview 行,而且还有用于绑定的数据行(这意味着您可以使用数据源中的列甚至不显示在网格中——通常这些额外的列对于格式化您显示的 columns/data 非常方便。并且通过使用行数据绑定事件,您也不必编写额外的循环来格式化。
无论如何,假设您的网格视图具有模板化字段,可以这样说:
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server">LinkButton</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
然后一个标准循环代码 get/use/have/change/format/play/have 在每个网格行的处理循环中使用 link 按钮很有趣?
这个:
foreach(GridViewRow gvR in GridView1.Rows)
{
LinkButton lBtn = (LinkButton)gvR.FindControl("LinkButton1");
if (lBtn.Text == "test")
{
// bla bla bla
}
}
所以自动生成列或数据绑定列?它们出现在 cells[]
集合中。但是,文本框、按钮、链接按钮等标准控件无疑会按照上述方式放入网格中(在 templateField 块中,并且按照上述方式 fetched/used 和 findcontrol。