Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.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
Asp.net .NET-SelectedRow不返回任何值_Asp.net_.net_Gridview - Fatal编程技术网

Asp.net .NET-SelectedRow不返回任何值

Asp.net .NET-SelectedRow不返回任何值,asp.net,.net,gridview,Asp.net,.net,Gridview,我是新加入.net的 我有两个连接到大型数据库的GridView。第一个返回按ID搜索的问题列表,而另一个返回按主题搜索的问题列表 我试图从gridview中获取ID,通过选择按钮返回问题,但当我使用selectedRow时,它不会返回任何内容 我尝试了多种方法,这就是我现在所拥有的。有什么建议吗 Protected Sub IssuesGV_SelectedIndexChanging(ByVal sender As Object, ByVal e As GridViewSelectEv

我是新加入.net的

我有两个连接到大型数据库的GridView。第一个返回按ID搜索的问题列表,而另一个返回按主题搜索的问题列表

我试图从gridview中获取ID,通过选择按钮返回问题,但当我使用selectedRow时,它不会返回任何内容

我尝试了多种方法,这就是我现在所拥有的。有什么建议吗

    Protected Sub IssuesGV_SelectedIndexChanging(ByVal sender As Object, ByVal e As GridViewSelectEventArgs)
        Dim pName As String
        pName = IssuesGV.SelectedRow.Cells(0).Text
        BindGridComments(pName)
    End Sub

    Protected Sub IssuesGV_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
        If e.Row.RowType = DataControlRowType.DataRow Then
            e.Row.Attributes("onmouseover") = "this.style.backgroundColor='aquamarine';"
            e.Row.Attributes("onmouseout") = "this.style.backgroundColor='white';"
            e.Row.ToolTip = "Click last column for selecting this row."
            ' e.Row.Cells(0).Attributes.Add("onclick", )
        End If
    End Sub
Protected Sub IssuesGV_RowCommand(sender As Object, e As GridViewCommandEventArgs)


        ' ' Dim row As GridViewRow = IssuesGV.Rows(rowIndex)

        '     v = row.Cells(1).Text
        'v = IssuesGV.SelectedRow.Cells(0).Text
        ' TextBox1.Text = v
        'TextBox1.Text = v

        If (e.CommandName = "Select1") Then
            Dim index As Int16
            index = Convert.ToInt32(e.CommandArgument)
            Dim row As GridViewRow
            row = IssuesGV.Rows(index)
            Dim item As ListItem
            item.Text = Server.HtmlDecode(row.Cells(0).Text)
        End If




    End Sub
我的gridview代码如下(我正在使用选择按钮的代码):


我收到的错误是:

System.ArgumentOutOfRangeException HResult=0x80131502
Message=索引超出范围。必须为非负数且小于 集合的大小。参数名称:索引源=堆栈跟踪:

非常感谢

前端: 您的GridView应该如下所示:

<asp:GridView ID="IssuesGV" runat="server" AutoGenerateColumns="false" 
    OnSelectedIndexChanged="IssuesGV_OnSelectedIndexChanged">
    <Columns>
        <asp:BoundField DataField="number" HeaderText="number" />

            ...Some Other Fields

        <asp:ButtonField Text="Select" CommandName="Select" ItemStyle-Width="150" />
    </Columns>
</asp:GridView>
参考:参见完整示例


编辑 出于某种原因,如果未触发
OnSelectedIndexChanged
方法,则只需在GridView标头标记中添加以下属性:

AutoGenerateSelectButton="True"
这将在GridView行中创建一个
Select
链接,它将触发
OnSelectedIndexChanged
方法


PS:如果以上所有解决方法都不起作用,那么请查看此问题。

我尝试了您的解决方案,但我发现这是一个错误(来自Row命令方法),并且OnSelectedIndexChanged方法没有触发。System.NullReferenceException HResult=0x80004003 Message=对象引用未设置为对象的实例。Source=StackTrace:您是否在GridView标题标记中添加了OnSelectedIndexChanged?是的,它在问题的代码中也可见。从前端和后端删除行命令方法,仅添加
OnSelectedIndexChanged
方法。该方法根本没有启动,我打开了调试器,但它没有启动。(我从前端和后端删除了row命令方法)
Protected Sub IssuesGV_OnSelectedIndexChanged(sender As Object, e As EventArgs)
    'Accessing Selected BoundField Column
    Dim number As String = IssuesGV.SelectedRow.Cells(0).Text

    label.Text = "<b>Number Value:</b> " & number & " <b>"
End Sub
AutoGenerateSelectButton="True"