我做了ASP.NET+SQL server三层架构的小程序,我想在页面上用repater控件点用数据,老是出错,代码如下
在DAL层写的是通过信息类型的TypeID值查询前五条信息publicvoidSelectByType(stringTypeID,stringNew,stringNewT...
在DAL层写的是通过信息类型的TypeID值查询前五条信息
public void SelectByType(string TypeID,string New,string NewTitle)
{
string Connstring = ConfigurationManager.ConnectionStrings[0].ToString();
using (SqlConnection conm = new SqlConnection(Connstring))
{
SqlCommand cmd = conm.CreateCommand();
cmd.CommandText = "Select top 5 NewTitle,New from News where TypeID=@TypeID";
cmd.Parameters.Add(new SqlParameter("@TypeID", TypeID));
cmd.Parameters.Add(new SqlParameter("@New", New));
cmd.Parameters.Add(new SqlParameter("@NewTitle", NewTitle));
conm.Open();
cmd.ExecuteNonQuery();
}
在BLL层写的是:
public void SelectByType(string TypeID, string New, string NewTitle)
{
DAL.NewsDAO dao = new DAL.NewsDAO();
dao.SelectByType(TypeID, New, NewTitle);
}
在.aspx.cs文件中写的是:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
SetBind();
}
}
public void SetBind()
{
yujia.BLL.NewsManager nm = new yujia.BLL.NewsManager();
Repeater1.DataSource = nm.SelectByType();
Repeater1.DataBind();
}
错误提示是 : SelectByType()方法没有任何冲在采用“0”个参数,谁知道是为什么啊 展开
public void SelectByType(string TypeID,string New,string NewTitle)
{
string Connstring = ConfigurationManager.ConnectionStrings[0].ToString();
using (SqlConnection conm = new SqlConnection(Connstring))
{
SqlCommand cmd = conm.CreateCommand();
cmd.CommandText = "Select top 5 NewTitle,New from News where TypeID=@TypeID";
cmd.Parameters.Add(new SqlParameter("@TypeID", TypeID));
cmd.Parameters.Add(new SqlParameter("@New", New));
cmd.Parameters.Add(new SqlParameter("@NewTitle", NewTitle));
conm.Open();
cmd.ExecuteNonQuery();
}
在BLL层写的是:
public void SelectByType(string TypeID, string New, string NewTitle)
{
DAL.NewsDAO dao = new DAL.NewsDAO();
dao.SelectByType(TypeID, New, NewTitle);
}
在.aspx.cs文件中写的是:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
SetBind();
}
}
public void SetBind()
{
yujia.BLL.NewsManager nm = new yujia.BLL.NewsManager();
Repeater1.DataSource = nm.SelectByType();
Repeater1.DataBind();
}
错误提示是 : SelectByType()方法没有任何冲在采用“0”个参数,谁知道是为什么啊 展开
3个回答
展开全部
简单点说,你定义了一个方法 A(string a,string b,string c) 其中有3个参数
那你使用的时候你就需要告诉这个方法 a,b,c都是什么
你定义的时候有3个参数public void SelectByType(string TypeID, string New, string NewTitle)
但是你使用的时候 Repeater1.DataSource = nm.SelectByType();,括号里没参数
这个方法不知道TypeID等是什么,就会出错的,你的告诉这个方法你定义的这几个参数都是什么Repeater1.DataSource = nm.SelectByType("你的TypeID","你的New","你的NewTitle");
那你使用的时候你就需要告诉这个方法 a,b,c都是什么
你定义的时候有3个参数public void SelectByType(string TypeID, string New, string NewTitle)
但是你使用的时候 Repeater1.DataSource = nm.SelectByType();,括号里没参数
这个方法不知道TypeID等是什么,就会出错的,你的告诉这个方法你定义的这几个参数都是什么Repeater1.DataSource = nm.SelectByType("你的TypeID","你的New","你的NewTitle");
追问
我改写成 Repeater1.DataSource = nm.SelectByType("TypeID", "New", "NewTitle");
提示说:无法将类型“void”隐式转换为“object” ,是不是public void SelectByType(string TypeID, string New, string NewTitle)不能将类型定义为 void类型,那么要怎么定义啊。
另外如果用Repeater绑定的话,是否应该给它个DataTable、DataView什么的,DataTable、DataView分别是什么啊,要怎么写啊,能帮我一下嘛,谢谢啦
追答
刚还没有注意,两点
1.我不是说传TypeID这个字符串,是说传TypeID对应的值
2.既然作为数据源是需要返回值的
另外看你写的代码和你问的问题我有个小小的建议,你如果要学的话建议从最基础的学起
不要一上来就想做东西,呵呵,学习编程基础才是最重要的,万变不离其宗
展开全部
你想怎么转换,很麻烦的,asp可以和asp.net一起用,没必要转啦
如果你执意要的话,请看下面的
将 ASP 移植至 ASP.NET
当移植 ASP 应用程序至 ASP.NET 时,会需要决定要花多少时间在现有的 ASP 应用程序并入 ASP.NET 新功能。将 ASP 网页的扩展名从 .asp 改为 .aspx,并修正一些句法上的变更通常就够让 ASP 网页如 ASP.NET 网页般运作。这一类的移植,虽然可快速完成,但并没有利用到多少 .NET 的新功能,包括 ASP.NET 的网页控件、Microsoft ADO.NET、Microsoft .NET Framework 类别等。虽然更完整的移植可能需要花更多时间,但最后完成的 ASP.NET 网页也更容易读取、更容易维护且功能更丰富。
身为一名开发人员,在决定要采取什么方法将 ASP 应用程序移至 ASP.NET 时,您需要稍加斟酌。如果有时间的压力,则从 ASP 至 ASP.NET 的简单移植可能比较合宜;如果没有什么期限,其实值得花点时间彻底建置一个丰富的 ASP.NET 应用程序。当然,您也可以采取渐进式的方法。如果您管理的大型站台利用了许多 COM 组件来实作商务规则,则可以选择先移植网页应用程序的使用者接口 (UI) 部份,并继续使用传统的 COM 组件。
在接下来的部份,将探讨以尽可能少的修改将现有的 ASP 程序代码移植至 ASP.NET。
将 ASP 应用程序移植至 ASP.NET
将现有 ASP 应用程序移植至 ASP.NET 的第一步就是将 ASP 网页的扩展名从 .asp 重新命名为 .aspx。由于 Project Report Application 只有一个 ASP 网页,所以剩下的工作其实非常简单。一旦进行这项变更之后,花点时间透过您的 Web 浏览器参观一下新的 .aspx 页面。加载时有发生错误吗?应该不太可能,不过 VBScript 程序代码有可能包含了一些句法问题。
当移植我们先前探讨过的 ASP 应用程序时,会收到的第一个错误讯息是关于 Option Explicit 的错误,如 [图 2] 所示。
[图 2] Option Explicit 陈述式错误讯息
对 ASP.NET 网页而言,此陈述式应该移至 @Page 指示词。现在可以开始编辑 .aspx 档案,移除行 1 和行 2,并以下列 @Page 指示词取代:
<% @Page Language="VB" Explicit="True" %>
完成这项变更之后,在浏览器中重新加载该页面。将会收到另一个关于 Response.Write 陈述式缺乏括号的错误。
[图 3] Response.Write 陈述式错误讯息
此错误的产生是因为 Visual Basic 要求副函式及函式中所有的自变量清单都必须使用括号括住。检查整个文件并为所有 Response.Write 陈述式的自变量清单周围放上括号,然后在浏览器中重新加载 ASP.NET 一次。
另一个从 Visual Basic 6.0/VBScript 到 Visual Basic .NET 的变更是 Visual Basic .NET 并不支持预设属性。预设属性允许开发人员走一点快捷方式 — 如果在 Visual Basic 6.0/VBScript 中使用传统 COM 组件而无法指定属性时,就可以使用预设属性。例如,ADO 数据录集的预设属性是 Fields 集合,而 Fields 集合的预设属性是 Value 属性。因此,当您使用:
Response.Write objRecordset("columnName")
在传统的 ASP 中您本质上的意思是:
Response.Write objRecordset.Fields("columnName").Value
当将传统的 ASP 网页移植置 ASP.NET 时,您可能会收到下列密码编译的错误讯息:
Cast from __ComObject to String is not valid.
[图 4] ASP.NET 移植程序错误讯息
发生这类错误是因为 Visual Basic .NET 并不支持预设属性,当我们使用:
Response.Write(objRecordset("columnName"))
Visual Basic .NET 尝试将 Fields 对象转换成 String,而它其实办不到。相反地,我们必须明确陈述希望输出的属性来指明想要输出的 Value 属性:
Response.Write(objRecordset.Fields("columnName").Value)
在继续移植 ASP.NET 应用程序的同时,必定会碰到其它句法上的错误。[表 1] 总结了将 Project Report Appliction 从 ASP 移植至 ASP.NET 时所遇到的句法错误。
附注 Visual Basic 在 Visual Basic .NET 的发行之时已蜕变为成熟的程序设计语言。它现在支持 try...catch 错误处理、真实对象导向开发,以及许多其它期待已久的增强功能。为了使 Visual Basic 更现代化,在语言上做些句法上的变更是必要的。也因此,Visual Basic .NET 并不是 100% 与 VBScript 或 Visual Basic 6. 0 相容。有关 Visual Basic .NET 中的变更的详细讨论, 请务必参阅《Preparing your Visual Basic 6.0 Applications for the Upgrade to Visual Basic .NET》(英文)。
[表 1] 移植 Project Report Application 时所遇到的句法错误
详细的看:
2011年
如果你执意要的话,请看下面的
将 ASP 移植至 ASP.NET
当移植 ASP 应用程序至 ASP.NET 时,会需要决定要花多少时间在现有的 ASP 应用程序并入 ASP.NET 新功能。将 ASP 网页的扩展名从 .asp 改为 .aspx,并修正一些句法上的变更通常就够让 ASP 网页如 ASP.NET 网页般运作。这一类的移植,虽然可快速完成,但并没有利用到多少 .NET 的新功能,包括 ASP.NET 的网页控件、Microsoft ADO.NET、Microsoft .NET Framework 类别等。虽然更完整的移植可能需要花更多时间,但最后完成的 ASP.NET 网页也更容易读取、更容易维护且功能更丰富。
身为一名开发人员,在决定要采取什么方法将 ASP 应用程序移至 ASP.NET 时,您需要稍加斟酌。如果有时间的压力,则从 ASP 至 ASP.NET 的简单移植可能比较合宜;如果没有什么期限,其实值得花点时间彻底建置一个丰富的 ASP.NET 应用程序。当然,您也可以采取渐进式的方法。如果您管理的大型站台利用了许多 COM 组件来实作商务规则,则可以选择先移植网页应用程序的使用者接口 (UI) 部份,并继续使用传统的 COM 组件。
在接下来的部份,将探讨以尽可能少的修改将现有的 ASP 程序代码移植至 ASP.NET。
将 ASP 应用程序移植至 ASP.NET
将现有 ASP 应用程序移植至 ASP.NET 的第一步就是将 ASP 网页的扩展名从 .asp 重新命名为 .aspx。由于 Project Report Application 只有一个 ASP 网页,所以剩下的工作其实非常简单。一旦进行这项变更之后,花点时间透过您的 Web 浏览器参观一下新的 .aspx 页面。加载时有发生错误吗?应该不太可能,不过 VBScript 程序代码有可能包含了一些句法问题。
当移植我们先前探讨过的 ASP 应用程序时,会收到的第一个错误讯息是关于 Option Explicit 的错误,如 [图 2] 所示。
[图 2] Option Explicit 陈述式错误讯息
对 ASP.NET 网页而言,此陈述式应该移至 @Page 指示词。现在可以开始编辑 .aspx 档案,移除行 1 和行 2,并以下列 @Page 指示词取代:
<% @Page Language="VB" Explicit="True" %>
完成这项变更之后,在浏览器中重新加载该页面。将会收到另一个关于 Response.Write 陈述式缺乏括号的错误。
[图 3] Response.Write 陈述式错误讯息
此错误的产生是因为 Visual Basic 要求副函式及函式中所有的自变量清单都必须使用括号括住。检查整个文件并为所有 Response.Write 陈述式的自变量清单周围放上括号,然后在浏览器中重新加载 ASP.NET 一次。
另一个从 Visual Basic 6.0/VBScript 到 Visual Basic .NET 的变更是 Visual Basic .NET 并不支持预设属性。预设属性允许开发人员走一点快捷方式 — 如果在 Visual Basic 6.0/VBScript 中使用传统 COM 组件而无法指定属性时,就可以使用预设属性。例如,ADO 数据录集的预设属性是 Fields 集合,而 Fields 集合的预设属性是 Value 属性。因此,当您使用:
Response.Write objRecordset("columnName")
在传统的 ASP 中您本质上的意思是:
Response.Write objRecordset.Fields("columnName").Value
当将传统的 ASP 网页移植置 ASP.NET 时,您可能会收到下列密码编译的错误讯息:
Cast from __ComObject to String is not valid.
[图 4] ASP.NET 移植程序错误讯息
发生这类错误是因为 Visual Basic .NET 并不支持预设属性,当我们使用:
Response.Write(objRecordset("columnName"))
Visual Basic .NET 尝试将 Fields 对象转换成 String,而它其实办不到。相反地,我们必须明确陈述希望输出的属性来指明想要输出的 Value 属性:
Response.Write(objRecordset.Fields("columnName").Value)
在继续移植 ASP.NET 应用程序的同时,必定会碰到其它句法上的错误。[表 1] 总结了将 Project Report Appliction 从 ASP 移植至 ASP.NET 时所遇到的句法错误。
附注 Visual Basic 在 Visual Basic .NET 的发行之时已蜕变为成熟的程序设计语言。它现在支持 try...catch 错误处理、真实对象导向开发,以及许多其它期待已久的增强功能。为了使 Visual Basic 更现代化,在语言上做些句法上的变更是必要的。也因此,Visual Basic .NET 并不是 100% 与 VBScript 或 Visual Basic 6. 0 相容。有关 Visual Basic .NET 中的变更的详细讨论, 请务必参阅《Preparing your Visual Basic 6.0 Applications for the Upgrade to Visual Basic .NET》(英文)。
[表 1] 移植 Project Report Application 时所遇到的句法错误
详细的看:
2011年
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你BLL层的函数都写了3个参数,页面后台怎么不传参呢,肯定出错啊!
追问
参数要怎么写啊,我是自学的,不是很懂啊
追答
ExecuteNonQuery() 返回整型,你如果是绑定数据,得调用:
SqlDataAdapter da=new SqlDataAdapter(···);
DataSet ds=new DataSet();
da.Fill(ds,"表名");
要修改传参和返回值类型!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询