我有一个包含以下列的GridView。
<Columns>
<asp:TemplateField HeaderText="Item Description">
<ItemTemplate>
<asp:Label ID="lblgvItemName" runat="server" Text='<%# Bind("ItemName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="IssueQty" HeaderText="Issue Qty" />
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lnkReturn" runat="server" CommandName="Return" CommandArgument='<%# Eval("ItemName") + "," + Eval("IssueQty") + %>' Text="Return" Font-Bold="true" ForeColor="Red">
</asp:LinkButton>
</ItemTemplate>
</Columns>
因为我需要在GridView的RowCommand事件中获取LinkButton的ForeColor。基于ForeColor,我正在做一些验证。
我试过这样,
string Color = ((LinkButton)gvRIVDetails.Rows[Convert.ToInt32(e.CommandArgument.ToString()].FindControl("lnkReturn")).ForeColor;
但是我已经在Command Argument中指定了ItemName和IssueQty。所以它抛出异常。 如何找到LinkButton的ForeColor?
答案 0 :(得分:1)
这会对你有所帮助。请看看。
GridViewRow row = (GridViewRow)((Control)e.CommandSource).NamingContainer;
LinkButton lstText = (LinkButton)row.FindControl("lnkReturn");
string text = lstText.ForeColor.ToString();
答案 1 :(得分:0)
看看:
string Color = (LinkButton) gvRIVDetails.Rows[Convert.ToInt32(e.CommandArgument.ToString()].FindControl("lnkReturn")).ForeColor;
如果您的索引超出范围,可能就在这里:
[Convert.ToInt32(e.CommandArgument.ToString())]
我建议使用断点/写字线来查看您使用的数字作为索引。 e.CommandArgument可能不是您想要解析行索引的。
答案 2 :(得分:0)
非常简单!!!
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lnkReturn" runat="server" CommandName="Return" CommandArgument='<%# Eval("ItemName") + "," + Eval("IssueQty") + %>' Text="Return" Font-Bold="true" ForeColor="Red" oncommand="FunctionABC">
</asp:LinkButton>
</ItemTemplate>
现在在Command事件上写一下
LinkButton lb=sender as LinkButton;
lb.ForeColor="Violet";
已经完成了。