Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Datagridview可以';t从所选行特定控制按钮字段获取文本_C#_Asp.net - Fatal编程技术网

C# Datagridview可以';t从所选行特定控制按钮字段获取文本

C# Datagridview可以';t从所选行特定控制按钮字段获取文本,c#,asp.net,C#,Asp.net,我有以下aspx: <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" BorderStyle="None" Font-Names="Verdana" Font-Size="12px" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" ShowHeader="False

我有以下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>                          
GridView1.SelectedRow.Cells[1]文本为空,但我可以在调试界面上看到它

我也尝试过:

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);   
    }
ButtonField bf=(ButtonField)GridView1.SelectedRow.Cells[2]。控件[0]

现在试试


相同的条件和不同的数据源在这里工作…

我认为ButtonField呈现为多个控件,您需要的是一个LinkButton,所以您需要做的是引用第二个控件并将其强制转换为LinkButton,如下所示-

LinkButton btn = (LinkButton)GridView1.SelectedRow.Cells[1].Controls[1];
string text = btn.Text;

代替控件[0],使用.Text或任何字符串容器无法将类型“string”转换为“System.Web.UI.WebControl.ButtonField”Metodo GridView1\u SelectedIndexChanged-Exception::System.ArgumentOutOfRangeException:指定的参数超出了有效值的范围。参数名称:System.Web.UI.ControlCollection.get_项(Int32索引)处的索引NovoPedidoWeb.GridView1_SelectedIndexChanged(Object sender,EventArgs e)-有趣的是,您是否尝试将其保留为控件[0]但是把它投到链接按钮上?这是我现在正在尝试的,但我花了很多时间去做。非常感谢我会投赞成票,但我需要15分。不用担心,很高兴我能帮上忙;)
LinkButton btn = (LinkButton)GridView1.SelectedRow.Cells[1].Controls[1];
string text = btn.Text;