是不是执行了正确的程序?

时间:2014-02-06 12:38:00

标签: asp.net sql-server c#-4.0 stored-procedures

public void GettraderwiseLiftingRecords()
{

    DataTable dtLEtraderReport = new DataTable();
    dtLEtraderReport.Clear();
    dtLEtraderReport = objhatcheryBAL.GetchicksaledueReport();
    GVTraderdueReport.DataSource = dtLEtraderReport;
    GVTraderdueReport.DataBind(); 
}

我在页面加载中调用了GettraderwiseLiftingRecords()方法。如果调试它直接进入这个方法。执行GetchicksaledueReport()方法时,它将采用主页面登录详细信息过程。这里“dtLEtraderReport”获取登录详细信息。为什么要采取其他细节?

最后我得到一个例外,比如“DataBinding:'System.Data.DataRowView'不包含名为'name'的属性”....

请帮帮我......

if (HttpContext.Current.User != null)
{
    if (Session["username"] != null)
    {
        string pageName = Page.Page.AppRelativeVirtualPath.Substring(Page.Page.AppRelativeVirtualPath.LastIndexOf('/') + 1);
        DataTable dtFeatures5 = new DataTable();
        dtFeatures5.Clear();
        ////da = new SqlDataAdapter("Exec Sp_GetUserModuleFeatures '" + Session["UserType"].ToString() + "'", con);
        ////da.Fill(dtFeatures);
        objMatermenuPL.usertype = Session["UserType"].ToString();
        dtFeatures5 = objMastermenuBAL.GetMastermenu(objMatermenuPL);

        DataView dt = new DataView(dtFeatures5);
        dt.Sort = "fld_feature ASC";

        if (dtFeatures5 != null)
        {
        }
    }
}

4 个答案:

答案 0 :(得分:2)

尝试使用:

var data = new DataTable();
using (var connection = new SqlConnection(connection.ConnectionString))
{
    var command = new SqlCommand("K_HM_GetChickamounttogrid");
    command.CommandType = System.Data.CommandType.StoredProcedure;
    command.Connection = connection;

    var dataAdaptor = new SqlDataAdapter(command);
    connection.Open();
    try
    {
        dataAdaptor.Fill(data);
    }
    catch (Exception e)
    {
        this.LogError(e);
    }
}

return data;

这与你的相同,但可能更清楚。

答案 1 :(得分:2)

在ASP.NET中,当它遇到错误时,有时调试器似乎会分离并继续显示页面。这就是它进入你的登录页面的原因。这是page_load失败后的下一步。所以服务器已经转移到下一页加载事件。您的(空)捕获块使您更难以查看(和调试)此问题的真正原因。

关于“DataBinding:'System.Data.DataRowView'”的错误可能是因为您的页面有一个绑定到列/元素“name”的数据网格(或其他绑定属性)。使用编辑器在.aspx页面中搜索“name”。然后调试绑定它的代码。确保结果集中有一列“名称”。否则,在数据网格中注释掉该列(或任何调用它的数据绑定),以确认我在说什么。

(因为你更新了代码)好了,你删除了空的catch块 我无法看到您的数据网格背后的源代码,但您的错误消息是您的数据集不包含“名称”列,但您的数据网格期望列“名称”。
根据你的回复链(下面)和@Dilip,听起来你的母版页上可能有一个数据绑定字段,错误就在那里。这可以解释为什么这个错误可能随时出现在任何地方。

查看第二个代码块,如果会话过期,则不会运行此代码。如果您的母版页具有数据网格(或其他数据绑定字段),则可能会收到错误,因为没有要绑定的数据。

答案 2 :(得分:1)

检查您的SQL存储过程,我确定哪个返回的查询将具有转义列,例如 ID,名称等。

同时检查“GVTraderdueReport”的属性是否还有转义字符SQL查询的字段/属性。

答案 3 :(得分:1)

您可能会在程序中给出错误的列名再次检查,如果不起作用回复我,我可以建议更多的事情