【问题标题】:Client side ADO.NET call fails to fill Dataset客户端 ADO.NET 调用无法填充数据集
【发布时间】:2010-12-11 09:59:59
【问题描述】:

我有一个 ASP.NET 网页,需要在我的 aspx 文件的脚本部分中从客户端进行 SQL Server 调用。我正在调用一个存储过程,它需要一个参数。此 sp 在 SQL Server Management Studio 中正常工作,按预期返回记录。当我尝试通过调用此 sp 填充数据集时,ds 将填充零记录。从客户端拨打这个电话有什么我想念的吗?这是我的代码。我正在对参数进行硬编码以进行测试。 PS - 我在 try catch 中有这个并且没有错误只是一个空的数据集。Thnx。

            string strAssignedTo = "Dwight Shoemaker";



            System.Data.DataSet ds = new System.Data.DataSet();
            System.Data.SqlClient.SqlConnection sqlcon = new System.Data.SqlClient.SqlConnection("Data Source=sql394.mysite4now.com;Initial Catalog=ULS_db1;User ID=uls2008;Password=uls2008");
            System.Data.SqlClient.SqlCommand comand = new System.Data.SqlClient.SqlCommand();
            comand.Connection = sqlcon;
            comand.CommandText = "GetAssignedToReport";
            comand.CommandType = System.Data.CommandType.StoredProcedure;

            comand.Parameters.Add(new System.Data.SqlClient.SqlParameter("@assignedTo", System.Data.SqlDbType.VarChar, 50));
            comand.Parameters["@assignedTo"].Value = strAssignedTo;

            System.Data.SqlClient.SqlDataAdapter sqladp = new System.Data.SqlClient.SqlDataAdapter(comand);

            sqlcon.Open();
            sqladp.Fill(ds);

【问题讨论】:

    标签: asp.net sql ado.net dataset client


    【解决方案1】:

    我已经尝试了你的代码,没关系。关于可能是错误的事情: 如果您尝试绑定GridView,如: gridView.DataSource= ds; 你什么都不会看到。我已经尝试了你的榜样,而不是以前的代码,我绑定了这个网格视图: gridView.DataSource = ds.Tables[0]; 我看到了你的记录。 列名称:Assegated_dt,值如:7 / 5/2005,5 / 2/2005。这是你期望的。 问候

    【讨论】:

    • 是 - 我现在看到记录。我试过你的建议。我正在为Crystal Report设置数据源 - 但显示时仍然没有记录。有什么想法吗。我使用DataSet(XSD文件)创建了报告模板。这是我的代码,它不起作用:uls_site.reports.equipassinedto orpt = new uls_site.reports.equipassinedto(); ORPT.SetDataSource(DS.Tables [0]); CrystyReportViewer1.reportsource = Olpt; span>
    • 我刚尝试了一个简单的测试,它有效。它必须是我的数据集定义以某种方式拧紧。我加入了大约5个桌子,所以我会看看那个。谢谢zm。 span>
    • 只有我有一个个人偏好,我有时我必须处理ADO.NET:在知道结果时使用DataTable时使用一个选择并在使用多个选择的查询时使用DataSet。跨度>
    • 我将数据集模板定义删除为我的存储过程与实际表格并在报表中执行关系。这似乎有效。我现在的问题问题 - 我即将发布的是如何为我的XSD文件指定相对路径。当我将其部署到我的Web托管服务器时 - 它无法找到它,因为它是使用我的Dev Machine路径定义的。有什么想法吗?
    【解决方案2】:

    不确定您的意思:ASP.Net C# 代码总是在 Web 服务器上运行,从不在客户端。两者只是不要混合。


    根据您的评论更新:

    你是如何声明你的“脚本”的?有两种方法可以做到:

    • 单个<script runat="server"> //code here </script> 元素。这可以处理任何页面事件,包括页面加载。

    • 内联脚本元素/蜜蜂刺。 <% %> 标签穿插在您的标记中。一种常见的误解是,这些标签中的代码在页面加载时运行。正如您可能从我对“误解”一词的使用中得出的那样,这是错误。这些标签中的代码要到页面生命周期的后期(PreRender、IIRC)才会运行。

    请特别注意第 2 项,因为此代码在 之后运行,数据绑定阶段已经完成。如果您想将该数据集用作控件的数据源,则需要手动对其进行 DataBind()。

    【讨论】:

    • 对不起,我的意思是我没有使用后面的代码,而是在我的 aspx 文件中的脚本中定义我的页面加载。
    猜你喜欢
    • 2021-02-20
    • 1970-01-01
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多