【发布时间】:2021-07-11 08:30:08
【问题描述】:
我需要在 Gridview 中显示特定 orderID 的行号。我希望将其存储为会话变量:
session("rownum"0)
但是,作为一个初学者,我对如何根据 QueryString 中的 OrderID 检查 Guid OrderID 感到有些困惑。我需要将其更改为标签吗?我收到了错误:
System.NullReferenceException: Object reference not set to an instance of an object.
任何帮助表示赞赏。
<asp:SqlDataSource ID="DSOrders" runat="server" ConnectionString="<%$ ConnectionStrings:DBConnectionString %>" SelectCommand="SELECT TOP (100) PERCENT tblOrders.OrderID, tblOrders.stallmessage, tblOrders.price, tblAccounts.city, tblAccounts.postcode, tblAccounts.phoneNumber, tblOrders.orderDate, tblOrders.orderStatus, tblOrders.type, tblOrders.timeFor, tblOrders.paid, tblOrders.tblNo
FROM tblOrders INNER JOIN
tblAccounts ON tblOrders.accountID = tblAccounts.AccountID
WHERE tblOrders.orderStatus='Completed'
ORDER BY tblOrders.orderDate ASC">
</asp:SqlDataSource>
<asp:GridView ID="gdvOrders" width="100%" runat="server"ShowHeaderWhenEmpty="True" EmptyDataText="No orders" AllowPaging="True" AutoGenerateColumns="False" CssClass="mGrid" DataKeyNames="orderID" DataSourceID="DSOrders" PageSize="20" AllowSorting="True">
<AlternatingRowStyle CssClass="alt" />
<Columns>
<asp:BoundField DataField="orderID" HeaderText="OrderID" />
.
.
</Columns>
</asp:GridView>
VB.NET
session("rownum")=0
For Each r As GridViewRow in gdvOrders.Rows
If r.RowType = DataControlRowType.DataRow Then
Dim orderID As Label
orderID = r.Cells(0).FindControl("orderID")
If orderID.text = Request.Querystring("orderID")
session("rownum") = session("rownum") + 1
End If
End If
Next r
【问题讨论】:
-
你能告诉我你在这段代码的哪一行得到了异常吗?
-
@Ale865 If orderID.text = Request.Querystring("orderID")
-
我猜
orderID为null,这意味着没有找到与r.Cells(0).FindControl("orderID")的控件 -
@Arsen gridview 显示里面有数据所以我不明白。