0

私は次のaspxを持っています:

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
                BorderStyle="None" Font-Names="Verdana" Font-Size="12px" 
                OnSelectedIndexChanged="GridView1_SelectedIndexChanged" ShowHeader="False"                     
                GridLines="None" EnableModelValidation="True" Width="22%" >
                    <RowStyle BorderStyle="None"  Height="40px" HorizontalAlign="Left"/>                            
                        <Columns>                                           
                            <asp:HyperLinkField Text="&lt;img src='../Images/CMM/download.png'/&gt;"></asp:HyperLinkField>                                                                
                            <asp:ButtonField CommandName="Select" DataTextField="codigo" DataTextFormatString="{0:d}"
                                ItemStyle-HorizontalAlign="Left" ControlStyle-Font-Underline="true">
                                <ControlStyle Font-Underline="True" />
                            </asp:ButtonField>
                        </Columns>
                    <EditRowStyle BorderStyle="None" />
                    <AlternatingRowStyle BorderStyle="None" />
                 </asp:GridView>                          

次の apsx.cs ファイル コードがあります。

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{                  
        CallSaveAs(GridView1.SelectedRow.Cells[1].Text);   
}

GridView1.SelectedRow.Cells[1].Text は空ですが、デバッグで確認できます

私も試しました:

ButtonField bf = (ButtonField)GridView1.SelectedRow.Cells[1].Controls[0];

しかし、タイプ 'System.Web.UI.Control' を 'System.Web.UI.WebControls.ButtonField' に変換できません

最後に解決策を見つけました:

    protected void GridView1_SelectedIndexChanged(object sender, EventArgs)
    {        
        LinkButton lb = (LinkButton)GridView1.SelectedRow.Cells[1].Controls[0];              
        CallSaveAs(lb.Text);   
    }
4

2 に答える 2

1

ButtonField は複数のコントロールとしてレンダリングされ、必要なものは LinkBut​​ton であるため、2 番目のコントロールを参照し、次のように LinkBut​​ton にキャストする必要があると思います -

LinkButton btn = (LinkButton)GridView1.SelectedRow.Cells[1].Controls[1];
string text = btn.Text;
于 2012-06-26T10:59:03.797 に答える
0

ButtonField bf = (ButtonField)GridView1.SelectedRow.Cells[2].Controls[0];

今試してみてください....

ここでは、異なるデータソースを使用した同じ条件が機能しました....

于 2012-06-26T10:36:45.177 に答える