Asp.net 如何使用会话保存要复制到文本框中的GridView当前行上的值VB.Net

Asp.net 如何使用会话保存要复制到文本框中的GridView当前行上的值VB.Net,asp.net,vb.net,Asp.net,Vb.net,我正在尝试使用会话记录当前行第1列的数据,该行将在另一个Web中使用,GridView中的链接按钮打开 基本上,如果我单击第一行的link按钮,第一行的第一列数据将复制到下一个Web表单。但在我这么做之前,我想做一个小规模的实验来测试它。因此,现在我希望会话以相同的形式将数据复制到文本框 以下是GridView的设计,以供参考,大多数行都已删除,因为它们不相关: <asp:GridView ID="GridView1" runat="server"

我正在尝试使用
会话
记录当前行第1列的数据,该行将在另一个Web中使用,
GridView
中的
链接按钮
打开

基本上,如果我单击第一行的
link按钮
,第一行的第一列数据将复制到下一个Web表单。但在我这么做之前,我想做一个小规模的实验来测试它。因此,现在我希望
会话
以相同的形式将数据复制到
文本框

以下是
GridView
的设计,以供参考,大多数行都已删除,因为它们不相关:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    BorderColor="Black" BorderStyle="Solid" BorderWidth="1px" Font-Names="Arial">
    <AlternatingRowStyle BackColor="#B7DBFF" />
    <Columns>

        <asp:BoundField DataField="caseticket" HeaderText="Ticket #" >
                <HeaderStyle BackColor="#000066" ForeColor="White" Wrap="False" width="10%"/>
                <ItemStyle Wrap="False" />
        </asp:BoundField>
                                                                
        <asp:TemplateField ShowHeader="False">
            <HeaderStyle BackColor="#000066" ForeColor="White" Wrap="False" width="10%"/>
            <ItemTemplate>
                <asp:linkbutton ID="newLog" runat="server" onclick = "CaseLog_click" >Add Log </asp:linkbutton>
            </ItemTemplate>
        </asp:TemplateField>

    </Columns>
    <HeaderStyle BackColor="#000066" />
    <RowStyle HorizontalAlign="Center" />
</asp:GridView>
如果我只在sub中保留
Response.Redirect(“~/CaseLog.aspx”)
,则
链接按钮可以将我指向下一个Web表单。但是现在,在测试过程中,当我使用
LinkButton
时,我在sub的
会话
行上得到一个错误

对象引用未设置为对象的实例。

代码可以修复吗,或者我需要重做吗


谢谢。

选择行的按钮事件似乎未连接

我会这样说:

<asp:BoundField DataField="HotelName" HeaderText="HotelName" SortExpression="HotelName" />
<asp:ButtonField CommandName="Select"  HeaderText="Select" ShowHeader="True" Text="Button" />
请注意,在编辑标记时,“英特尔感知”将在编辑时提供一个选项列表。例如:

因此,这给了我们一个连接(添加)标准单击事件的机会。不需要选择索引代码存根(因为按钮将在选择索引之前触发)。因此,我们现在正在手动连接此事件。因此,我们不使用selectedindex更改事件-我们甚至不需要它

因此,现在在我们的按钮存根中,我们可以自由地做任何我们想做的事情——包括跳转到另一个页面

例如:

因此,要添加单独的代码按钮: 不要使用selected index change事件-您可能仍希望它运行,但它将在您的按钮代码后运行/触发(因此不能使用selectedrow-太早)

但是,您确实需要Command=“myjunk”,因为如果没有命令,那么Command参数将无法工作。通过在commandargument中传递行索引,我们就可以按照上面的代码通过行索引从gridview获取数据


因此,您可以很好地转储所选的索引更改事件。您只需传递行索引,然后从该索引开始工作。因此,代码存根可以走狗,在会话中设置值,甚至通过参数传递/生成url。

单元格集合从0开始,因此第一列将是0,而不是1。我可能会将该值分配给一个变量,并在调试器中输入一个断点,以确保您拥有来自网格的值。你真的需要两个独立的问题。如何从网格中获取/获取一个值,然后开始编写关于如何将该值传递到下一个表单的代码(可能还有一个问题)(session()是一个好主意)。以及您的文本框的测试/调试代码?(同样,这是个好主意-尝试使用单元格(0),然后看看这是否有效。如果有效,那么您就相当自由了。谢谢提醒。我将单元格更改为0,但仍然存在相同的问题。正如我在帖子中所说,GridView已更改为删除不相关的列。因此,如果单元格为1,则仍然会有一个值。此外,GridView中的数据也是从SQL获取的在加载事件中查询。这可能是一个因素吗?填充数据-不是问题-请参阅下面的我的帖子-可以使用GridView selected index事件(不是实际按钮的事件代码存根)。我不太明白这里的意思…我将
模板字段
更改为
按钮字段
,并使用
SelectedIndexChanged
子字段,就像你的答案一样,我暂时注释掉了我的子字段。测试按钮没有结果…我甚至从你的调试更改到我的文本框,但仍然没有任何更改。我是否遗漏了什么?是吗代码存根运行?请注意,事件实际上不再是按钮,而是gridview索引更改事件。此外,请添加Command=“Select”我在
按钮字段中添加了
命令名
。我刚刚将其重命名为
“CaseAdd”
。我在
SelectedIndexChanged
子系统中放置了一个断点,然后运行程序。单击按钮不会触发断点。我相信这是因为子系统没有引用
命令名
,但我不太确定将其植入何处。命令名是固定的-无法更改该值。必须选择该值。请阅读此帖子:阅读此帖子:。您可以双击属性页(在选定索引更改时)让vs为您创建事件。
<asp:BoundField DataField="HotelName" HeaderText="HotelName" SortExpression="HotelName" />
<asp:ButtonField CommandName="Select"  HeaderText="Select" ShowHeader="True" Text="Button" />
 Protected Sub GridView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles GridView1.SelectedIndexChanged

    Dim lgridrow As GridViewRow = Me.GridView1.SelectedRow

    Debug.Print("<" & lgridrow.Cells(0).Text & ">")
    Debug.Print("<" & lgridrow.Cells(3).Text & ">")

    Debug.Print("<" & Me.GridView1.SelectedRow.Cells(3).Text & ">")


End Sub
       <Columns>
            <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" ReadOnly="True" SortExpression="ID" />
            <asp:BoundField DataField="LastName" HeaderText="LastName" SortExpression="LastName" />
            <asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" />
            <asp:BoundField DataField="HotelName" HeaderText="HotelName" SortExpression="HotelName" />
            <asp:ButtonField CommandName="Select"  HeaderText="Select" ShowHeader="True" Text="Button" />
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:LinkButton ID="LinkButton1" runat="server"   OnClick="LinkButton1_Click"
                        CommandName="MySelect" CommandArgument  ="<%# Container.DisplayIndex %>"
                        style="background-color:gray;color:white;text-decoration:none;padding-left:6px;padding-right:6px"
                        text="Mybutton"></asp:LinkButton>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
            
Protected Sub LinkButton1_Click(sender As Object, e As EventArgs)

    Dim ixrow As Integer = sender.CommandArgument

    Debug.Print(Me.GridView1.Rows(ixrow).Cells(0).Text)

End Sub
Protected Sub LinkButton1_Click(sender As Object, e As EventArgs)

    Dim ixrow As Integer = sender.CommandArgument

    Debug.Print(Me.GridView1.Rows(ixrow).Cells(0).Text)
    Session("HotelName") = Me.GridView1.Rows(ixrow).Cells(3)
    Response.Redirect("~/ShowHotelDetails.aspx")

End Sub