2012-03-01 46 views
0

我有一個GridView與以下列。如何在RowCommand事件中獲取GridView的LinkBut​​ton ForeColor?

<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事件中獲取LinkBut​​ton的ForeColor。基於ForeColor,我正在做一些驗證。

我試過這樣的,

string Color = ((LinkButton)gvRIVDetails.Rows[Convert.ToInt32(e.CommandArgument.ToString()].FindControl("lnkReturn")).ForeColor; 

但我在命令參數已經指定ITEMNAME和IssueQty。所以它拋出異常。 如何找到LinkBut​​ton的ForeColor?

+0

有什麼例外? – 2012-03-01 08:39:16

+0

它會引發以下異常:「索引超出範圍,必須爲非負數,小於集合的大小 參數名稱:索引」 – thevan 2012-03-01 08:41:57

回答

1

這會幫助你。請看看。

  GridViewRow row = (GridViewRow)((Control)e.CommandSource).NamingContainer; 

     LinkButton lstText = (LinkButton)row.FindControl("lnkReturn"); 

     string text = lstText.ForeColor.ToString(); 
0

看看:

string Color = (LinkButton) gvRIVDetails.Rows[Convert.ToInt32(e.CommandArgument.ToString()].FindControl("lnkReturn")).ForeColor; 

如果你正在索引超出範圍,有機會,它是在這裏:

[Convert.ToInt32(e.CommandArgument.ToString())] 

我建議斷點/的WriteLine看什麼您用作索引的號碼。 e.CommandArgument可能不是您想要解析行索引的操作。

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";  

和它的完成。

相關問題