aspx页面:<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="b.aspx.cs" Inherits="b" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ffffConnectionString %>"
SelectCommand="SELECT * FROM [ProductSkdkd] WHERE ([ProductId] = @ProductId)">
<SelectParameters>
<asp:QueryStringParameter DefaultValue="2" Name="ProductId" QueryStringField="id"
Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
<asp:DataList ID="DataList1" runat="server" DataKeyField="ProductId" DataSourceID="SqlDataSource1">
<ItemTemplate>
ProductId:
<asp:Label ID="ProductIdLabel" runat="server" Text='<%# Eval("ProductId") %>'></asp:Label><br />
<br />
<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/dom_img/buy1.gif" OnClick="ImageButton1_Click" /><br />
</ItemTemplate>
</asp:DataList>
</asp:Content>
CS代码:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public partial class b : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{ }
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
int Id = Convert.ToUInt16(((Label)DataList1.FindControl("ProductIdLabel")).Text);
}
}一运行,点OnClick后就提示:
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误:
行 18: protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
行 19: {
行 20: int Id = Convert.ToUInt16(((Label)DataList1.FindControl("ProductIdLabel")).Text);
行 21: }
行 22: }
这个问题困扰好久了,是哪里写错了呢?各位帮帮我!!
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ffffConnectionString %>"
SelectCommand="SELECT * FROM [ProductSkdkd] WHERE ([ProductId] = @ProductId)">
<SelectParameters>
<asp:QueryStringParameter DefaultValue="2" Name="ProductId" QueryStringField="id"
Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
<asp:DataList ID="DataList1" runat="server" DataKeyField="ProductId" DataSourceID="SqlDataSource1">
<ItemTemplate>
ProductId:
<asp:Label ID="ProductIdLabel" runat="server" Text='<%# Eval("ProductId") %>'></asp:Label><br />
<br />
<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/dom_img/buy1.gif" OnClick="ImageButton1_Click" /><br />
</ItemTemplate>
</asp:DataList>
</asp:Content>
CS代码:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public partial class b : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{ }
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
int Id = Convert.ToUInt16(((Label)DataList1.FindControl("ProductIdLabel")).Text);
}
}一运行,点OnClick后就提示:
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误:
行 18: protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
行 19: {
行 20: int Id = Convert.ToUInt16(((Label)DataList1.FindControl("ProductIdLabel")).Text);
行 21: }
行 22: }
这个问题困扰好久了,是哪里写错了呢?各位帮帮我!!
int Id = Convert.ToUInt16(((Label)DataList1.Items[0].FindControl("ProductIdLabel")).Text);
有问题,改成
int Id = Convert.ToUInt16(((Label)(DataList1.FindControl("ProductIdLabel"))).Text);
试试