问题描述
在选定的数据源上未找到名为“uid”的字段或属性。说明:执行当前Web请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。异常详细信息:System.Web.HttpException:在选定的数据源上未找到名为“uid”的字段或属性。源错误:行21:DropDownList1.Items.Add("班级");行22:GridView1.DataSource=AccessDataSource4;//在Gridview1中显示所有记录行23:GridView1.DataBind();行24:}行25:源文件:c:UsersAdministratorDocumentsVisualStudio2008WebSitesWebSite4Default.aspx.cs行:23堆栈跟踪:[HttpException(0x80004005):在选定的数据源上未找到名为“uid”的字段或属性。]System.Web.UI.WebControls.BoundField.GetValue(ControlcontrolContainer)+1613383System.Web.UI.WebControls.BoundField.OnDataBindField(Objectsender,EventArgse)+64System.Web.UI.Control.OnDataBinding(EventArgse)+99System.Web.UI.Control.DataBind(BooleanraiseOnDataBinding)+92System.Web.UI.Control.DataBind()+15System.Web.UI.Control.DataBindChildren()+211System.Web.UI.Control.DataBind(BooleanraiseOnDataBinding)+102System.Web.UI.Control.DataBind()+15System.Web.UI.WebControls.GridView.CreateRow(Int32rowIndex,Int32dataSourceIndex,DataControlRowTyperowType,DataControlRowStaterowState,BooleandataBind,ObjectdataItem,DataControlField[]fields,TableRowCollectionrows,PagedDataSourcepagedDataSource)+155System.Web.UI.WebControls.GridView.CreateChildControls(IEnumerabledataSource,BooleandataBinding)+2417System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerabledata)+57System.Web.UI.WebControls.GridView.PerformDataBinding(IEnumerabledata)+14System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerabledata)+114System.Web.UI.DataSourceView.Select(DataSourceSelectArgumentsarguments,DataSourceViewSelectCallbackcallback)+31System.Web.UI.WebControls.DataBoundControl.PerformSelect()+142System.Web.UI.WebControls.BaseDataBoundControl.DataBind()+73System.Web.UI.WebControls.GridView.DataBind()+4_Default.Page_Load(Objectsender,EventArgse)inc:UsersAdministratorDocumentsVisualStudio2008WebSitesWebSite4Default.aspx.cs:23System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtrfp,Objecto,Objectt,EventArgse)+14System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Objectsender,EventArgse)+35System.Web.UI.Control.OnLoad(EventArgse)+99System.Web.UI.Control.LoadRecursive()+50System.Web.UI.Page.ProcessRequestMain(BooleanincludeStagesBeforeAsyncPoint,BooleanincludeStagesAfterAsyncPoint)+627--------------------------------------------------------------------------------版本信息:Microsoft.NETFramework版本:2.0.50727.5420;ASP.NET版本:2.0.50727.5420
解决方案
解决方案二:
为什么会有这样的错误??
解决方案三:
你的数据库里没有uid这个字段啊
解决方案四:
引用2楼fxj805835819的回复:
你的数据库里没有uid这个字段啊
有数据库里有这个字段
解决方案五:
引用3楼qq_35043461的回复:
Quote: 引用2楼fxj805835819的回复:
你的数据库里没有uid这个字段啊有数据库里有这个字段
那是你读取出来的数据里没有这个字段吧,你把SQL语句也贴出来
解决方案六:
数据源取得不全,所以没有绑定上
解决方案七:
引用4楼fxj805835819的回复:
Quote: 引用3楼qq_35043461的回复:
Quote: 引用2楼fxj805835819的回复:
你的数据库里没有uid这个字段啊有数据库里有这个字段
那是你读取出来的数据里没有这个字段吧,你把SQL语句也贴出来
<asp:AccessDataSourceID="AccessDataSource1"runat="server"DataFile="~/App_Data/Student.mdb"SelectCommand="selectuidas学号,unameas姓名,usexas性别,classas班级,chsas语文,mathas数学,enas英语,(chs+math+en)as总分from[grade]where([uid]=?)"><SelectParameters><asp:ControlParameterControlID="TextBox1"DefaultValue="uid"Name="?"PropertyName="Text"/></SelectParameters></asp:AccessDataSource><asp:AccessDataSourceID="AccessDataSource2"runat="server"DataFile="~/App_Data/Student.mdb"SelectCommand="selectuidas学号,unameas姓名,usexas性别,classas班级,chsas语文,mathas数学,enas英语,(chs+math+en)as总分from[grade]where([uname]like'%'+?+'%')"onselecting="AccessDataSource2_Selecting"><SelectParameters><asp:ControlParameterControlID="TextBox1"DefaultValue="uname"Name="?"PropertyName="Text"/></SelectParameters></asp:AccessDataSource><asp:AccessDataSourceID="AccessDataSource3"runat="server"DataFile="~/App_Data/Student.mdb"SelectCommand="selectuidas学号,unameas姓名,usexas性别,classas班级,chsas语文,mathas数学,enas英语,(chs+math+en)as总分from[grade]where([class]like'%'+?+'%')"><SelectParameters><asp:ControlParameterControlID="TextBox1"DefaultValue="class"Name="?"PropertyName="Text"/></SelectParameters></asp:AccessDataSource><asp:AccessDataSourceID="AccessDataSource4"runat="server"DataFile="~/App_Data/Student.mdb"SelectCommand="selectuidas学号,unameas姓名,usexas性别,classas班级,chsas语文,mathas数学,enas英语,(chs+math+en)as总分from[grade]"></asp:AccessDataSource>是这个么。。
解决方案八:
uid写错了,gridview里面应该写学号
解决方案九:
引用6楼qq_35043461的回复:
Quote: 引用4楼fxj805835819的回复:
Quote: 引用3楼qq_35043461的回复:
Quote: 引用2楼fxj805835819的回复:
你的数据库里没有uid这个字段啊有数据库里有这个字段
那是你读取出来的数据里没有这个字段吧,你把SQL语句也贴出来
<asp:AccessDataSourceID="AccessDataSource1"runat="server"DataFile="~/App_Data/Student.mdb"SelectCommand="selectuidas学号,unameas姓名,usexas性别,classas班级,chsas语文,mathas数学,enas英语,(chs+math+en)as总分from[grade]where([uid]=?)"><SelectParameters><asp:ControlParameterControlID="TextBox1"DefaultValue="uid"Name="?"PropertyName="Text"/></SelectParameters></asp:AccessDataSource><asp:AccessDataSourceID="AccessDataSource2"runat="server"DataFile="~/App_Data/Student.mdb"SelectCommand="selectuidas学号,unameas姓名,usexas性别,classas班级,chsas语文,mathas数学,enas英语,(chs+math+en)as总分from[grade]where([uname]like'%'+?+'%')"onselecting="AccessDataSource2_Selecting"><SelectParameters><asp:ControlParameterControlID="TextBox1"DefaultValue="uname"Name="?"PropertyName="Text"/></SelectParameters></asp:AccessDataSource><asp:AccessDataSourceID="AccessDataSource3"runat="server"DataFile="~/App_Data/Student.mdb"SelectCommand="selectuidas学号,unameas姓名,usexas性别,classas班级,chsas语文,mathas数学,enas英语,(chs+math+en)as总分from[grade]where([class]like'%'+?+'%')"><SelectParameters><asp:ControlParameterControlID="TextBox1"DefaultValue="class"Name="?"PropertyName="Text"/></SelectParameters></asp:AccessDataSource><asp:AccessDataSourceID="AccessDataSource4"runat="server"DataFile="~/App_Data/Student.mdb"SelectCommand="selectuidas学号,unameas姓名,usexas性别,classas班级,chsas语文,mathas数学,enas英语,(chs+math+en)as总分from[grade]"></asp:AccessDataSource>是这个么。。
uid写错了,gridview里面应该写学号
解决方案十:
引用8楼u010941149的回复:
Quote: 引用6楼qq_35043461的回复:
Quote: 引用4楼fxj805835819的回复:
Quote: 引用3楼qq_35043461的回复:
Quote: 引用2楼fxj805835819的回复:
你的数据库里没有uid这个字段啊有数据库里有这个字段
那是你读取出来的数据里没有这个字段吧,你把SQL语句也贴出来
<asp:AccessDataSourceID="AccessDataSource1"runat="server"DataFile="~/App_Data/Student.mdb"SelectCommand="selectuidas学号,unameas姓名,usexas性别,classas班级,chsas语文,mathas数学,enas英语,(chs+math+en)as总分from[grade]where([uid]=?)"><SelectParameters><asp:ControlParameterControlID="TextBox1"DefaultValue="uid"Name="?"PropertyName="Text"/></SelectParameters></asp:AccessDataSource><asp:AccessDataSourceID="AccessDataSource2"runat="server"DataFile="~/App_Data/Student.mdb"SelectCommand="selectuidas学号,unameas姓名,usexas性别,classas班级,chsas语文,mathas数学,enas英语,(chs+math+en)as总分from[grade]where([uname]like'%'+?+'%')"onselecting="AccessDataSource2_Selecting"><SelectParameters><asp:ControlParameterControlID="TextBox1"DefaultValue="uname"Name="?"PropertyName="Text"/></SelectParameters></asp:AccessDataSource><asp:AccessDataSourceID="AccessDataSource3"runat="server"DataFile="~/App_Data/Student.mdb"SelectCommand="selectuidas学号,unameas姓名,usexas性别,classas班级,chsas语文,mathas数学,enas英语,(chs+math+en)as总分from[grade]where([class]like'%'+?+'%')"><SelectParameters><asp:ControlParameterControlID="TextBox1"DefaultValue="class"Name="?"PropertyName="Text"/></SelectParameters></asp:AccessDataSource><asp:AccessDataSourceID="AccessDataSource4"runat="server"DataFile="~/App_Data/Student.mdb"SelectCommand="selectuidas学号,unameas姓名,usexas性别,classas班级,chsas语文,mathas数学,enas英语,(chs+math+en)as总分from[grade]"></asp:AccessDataSource>是这个么。。
uid写错了,gridview里面应该写学号
哪个?。。。有点不太懂,。可以说的详细一点么?
解决方案十一:
引用9楼qq_35043461的回复:
Quote: 引用8楼u010941149的回复:
Quote: 引用6楼qq_35043461的回复:
Quote: 引用4楼fxj805835819的回复:
Quote: 引用3楼qq_35043461的回复:
Quote: 引用2楼fxj805835819的回复:
你的数据库里没有uid这个字段啊有数据库里有这个字段
那是你读取出来的数据里没有这个字段吧,你把SQL语句也贴出来
<asp:AccessDataSourceID="AccessDataSource1"runat="server"DataFile="~/App_Data/Student.mdb"SelectCommand="selectuidas学号,unameas姓名,usexas性别,classas班级,chsas语文,mathas数学,enas英语,(chs+math+en)as总分from[grade]where([uid]=?)"><SelectParameters><asp:ControlParameterControlID="TextBox1"DefaultValue="uid"Name="?"PropertyName="Text"/></SelectParameters></asp:AccessDataSource><asp:AccessDataSourceID="AccessDataSource2"runat="server"DataFile="~/App_Data/Student.mdb"SelectCommand="selectuidas学号,unameas姓名,usexas性别,classas班级,chsas语文,mathas数学,enas英语,(chs+math+en)as总分from[grade]where([uname]like'%'+?+'%')"onselecting="AccessDataSource2_Selecting"><SelectParameters><asp:ControlParameterControlID="TextBox1"DefaultValue="uname"Name="?"PropertyName="Text"/></SelectParameters></asp:AccessDataSource><asp:AccessDataSourceID="AccessDataSource3"runat="server"DataFile="~/App_Data/Student.mdb"SelectCommand="selectuidas学号,unameas姓名,usexas性别,classas班级,chsas语文,mathas数学,enas英语,(chs+math+en)as总分from[grade]where([class]like'%'+?+'%')"><SelectParameters><asp:ControlParameterControlID="TextBox1"DefaultValue="class"Name="?"PropertyName="Text"/></SelectParameters></asp:AccessDataSource><asp:AccessDataSourceID="AccessDataSource4"runat="server"DataFile="~/App_Data/Student.mdb"SelectCommand="selectuidas学号,unameas姓名,usexas性别,classas班级,chsas语文,mathas数学,enas英语,(chs+math+en)as总分from[grade]"></asp:AccessDataSource>是这个么。。
uid写错了,gridview里面应该写学号
哪个?。。。有点不太懂,。可以说的详细一点么?
GridView1修改一下
解决方案十二:
引用7楼u010941149的回复:
uid写错了,gridview里面应该写学号
publicpartialclass_Default:System.Web.UI.Page{protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){DropDownList1.Items.Add("学号");DropDownList1.Items.Add("姓名");DropDownList1.Items.Add("班级");GridView1.DataSource=AccessDataSource4;GridView1.DataBind();}}protectedvoidButton1_Click(objectsender,EventArgse){if(TextBox1.Text==""){Response.Write("<scriptlanguage=javascript>alert('查询关键字不能为空!');</script>");return;}switch(DropDownList1.Text){case"学号":GridView1.DataSource=AccessDataSource1;GridView1.DataBind();break;case"姓名":GridView1.DataSource=AccessDataSource2;GridView1.DataBind();break;case"班级":GridView1.DataSource=AccessDataSource3;GridView1.DataBind();break;}if(GridView1.Rows.Count==0){Response.Write("<scriptlanguage=javascript>alert('未找到符合条件的记录')</script>");TextBox1.Text="";GridView1.DataSource=AccessDataSource4;GridView1.DataBind();}}protectedvoidButton2_Click(objectsender,EventArgse){GridView1.DataSource=AccessDataSource4;GridView1.DataBind();}doublesum1=0;doublesum2=0;doublesum3=0;doublesum4=0;protectedvoidGridView1_RowDataBound(objectsender,GridViewRowEventArgse){if(e.Row.RowIndex>-1){sum1+=Convert.ToDouble(e.Row.Cells[4].Text);sum2+=Convert.ToDouble(e.Row.Cells[5].Text);sum3+=Convert.ToDouble(e.Row.Cells[6].Text);sum4+=Convert.ToDouble(e.Row.Cells[7].Text);}elseif(e.Row.RowType==DataControlRowType.Footer){e.Row.Cells[3].Text="<b>平均:</b>";e.Row.Cells[4].Text=((double)(sum1/GridView1.Rows.Count)).ToString("0.00");e.Row.Cells[5].Text=((double)(sum2/GridView1.Rows.Count)).ToString("0.00");e.Row.Cells[6].Text=((double)(sum3/GridView1.Rows.Count)).ToString("0.00");e.Row.Cells[7].Text=((double)(sum4/GridView1.Rows.Count)).ToString("0.00");}}怎么改。。。。。还是不太懂
解决方案十三:
引用6楼qq_35043461的回复:
Quote: 引用4楼fxj805835819的回复:
Quote: 引用3楼qq_35043461的回复:
Quote: 引用2楼fxj805835819的回复:
你的数据库里没有uid这个字段啊有数据库里有这个字段
那是你读取出来的数据里没有这个字段吧,你把SQL语句也贴出来
<asp:AccessDataSourceID="AccessDataSource1"runat="server"DataFile="~/App_Data/Student.mdb"SelectCommand="selectuidas学号,unameas姓名,usexas性别,classas班级,chsas语文,mathas数学,enas英语,(chs+math+en)as总分from[grade]where([uid]=?)"><SelectParameters><asp:ControlParameterControlID="TextBox1"DefaultValue="uid"Name="?"PropertyName="Text"/></SelectParameters></asp:AccessDataSource><asp:AccessDataSourceID="AccessDataSource2"runat="server"DataFile="~/App_Data/Student.mdb"SelectCommand="selectuidas学号,unameas姓名,usexas性别,classas班级,chsas语文,mathas数学,enas英语,(chs+math+en)as总分from[grade]where([uname]like'%'+?+'%')"onselecting="AccessDataSource2_Selecting"><SelectParameters><asp:ControlParameterControlID="TextBox1"DefaultValue="uname"Name="?"PropertyName="Text"/></SelectParameters></asp:AccessDataSource><asp:AccessDataSourceID="AccessDataSource3"runat="server"DataFile="~/App_Data/Student.mdb"SelectCommand="selectuidas学号,unameas姓名,usexas性别,classas班级,chsas语文,mathas数学,enas英语,(chs+math+en)as总分from[grade]where([class]like'%'+?+'%')"><SelectParameters><asp:ControlParameterControlID="TextBox1"DefaultValue="class"Name="?"PropertyName="Text"/></SelectParameters></asp:AccessDataSource><asp:AccessDataSourceID="AccessDataSource4"runat="server"DataFile="~/App_Data/Student.mdb"SelectCommand="selectuidas学号,unameas姓名,usexas性别,classas班级,chsas语文,mathas数学,enas英语,(chs+math+en)as总分from[grade]"></asp:AccessDataSource>是这个么。。
uidas学号被你as成学号了啊,在引用的时候不能用uid了,用学号