0

次の列を持つ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イベントでLinkBut​​tonのForeColorを取得する必要があります。ForeColorに基づいて、いくつかの検証を行っています。

私はこのように試しました、

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

ただし、コマンド引数でItemNameとIssueQtyをすでに指定しています。したがって、例外がスローされます。LinkBut​​tonのForeColorを見つける方法は?

4

3 に答える 3

1

これはあなたを助けるでしょう。ご覧ください。

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

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

        string text = lstText.ForeColor.ToString();
于 2012-03-01T10:24:51.550 に答える
0

を見てみましょう:

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

範囲外のインデックスを取得している場合は、ここにある可能性があります。

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

ブレークポイント/書き込みラインを使用して、インデックスとして使用している番号を確認することをお勧めします。e.CommandArgument は、行インデックスを解析するためにやりたいことではないかもしれません。

于 2012-03-01T08:51:45.263 に答える
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> 

コマンドイベントで書くだけ

LinkButton lb=sender as LinkButton;
lb.ForeColor="Violet";    

そして完成です。

于 2012-03-01T09:00:25.250 に答える