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)
{
}
}
}
答案 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)
您可能会在程序中给出错误的列名再次检查,如果不起作用回复我,我可以建议更多的事情