Как получить GridView LinkButton ForeColor в событии RowCommand? - PullRequest
0 голосов
/ 01 марта 2012

У меня есть 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>

Для этого мне нужно получить ForeColor LinkButton в событии RowCommand GridView.Основываясь на ForeColor, я делаю некоторые проверки.

Я пытался вот так,

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

Но я уже указал ItemName и IssueQty в аргументе команды.Так что это исключение.Как найти ForeColor для LinkButton?

Ответы [ 3 ]

1 голос
/ 01 марта 2012

Это поможет вам. Пожалуйста, посмотрите.

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

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

        string text = lstText.ForeColor.ToString();
0 голосов
/ 01 марта 2012

Очень просто !!!

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

и готово.

0 голосов
/ 01 марта 2012

Взгляните на:

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

Если вы получаете индекс вне диапазона, скорее всего, он здесь:

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

Я бы предложил точку останова / записи, чтобы увидеть, какое число вы используете в качестве индекса. e.CommandArgument может не подходить для анализа индекса строки.

...