数据集引用不正确
本文关键字:不正确 引用 数据集 | 更新日期: 2023-09-27 18:22:17
我的数据集有问题。我使用一个来填充表单的文本框。用户选择一个值进行搜索,然后按下按钮,然后填充文本框。这对第一张唱片来说很好,但我想翻阅一下。我已经声明了一个数据集供我的其他方法使用,但当它对返回的行进行分页时,我不断收到Object引用错误。有人能告诉我哪里出了问题吗?
声明变量:
//creates a global dataset for the copies table
DataSet dataSetHM;
//create default row values
int MaxRows = 0;
int inc = 0;
连接到数据库并填充数据集:
protected void ExecuteSelectCopies(string sName)
{
SqlConnection connection = new SqlConnection(GetConnectionString());
string sql =
"SELECT tblCopies.CopyID, tblSoftware.SoftwareName, tblCopies.AssetName, tblCopies.Location,"
+ " tblCopies.LicenceKey, tblCopies.OEM, tblCopies.State, tblCopies.InstallationDate"
+ " FROM tblCopies"
+ " INNER JOIN tblSoftware ON tblCopies.SoftwareID = tblSoftware.SoftwareID"
+ " WHERE tblSoftware.SoftwareName = @SoftwareName"
+ " ORDER BY tblCopies.CopyID";
SqlDataAdapter adapterHM = new SqlDataAdapter();
SqlCommand select = new SqlCommand(sql, connectionHM);
adapter.SelectCommand = select;
select.Parameters.Add(new SqlParameter("@SoftwareName", sName));
//open the connection
connectionHM.Open();
dataSetHM = new DataSet();
adapterHM.Fill(dataSetHM, "Copies");
NavigateCopies();
MaxRows = dataSetHM.Tables["Copies"].Rows.Count;
connectionHM.Close();
}
文本框的填充方法:
private void NavigateCopies()
{
DataRow dRow = dataSetHM.Tables["Copies"].Rows[inc];
TextBoxCopyID.Text = dRow.ItemArray.GetValue(0).ToString();
TextBoxSoftwareName.Text = dRow.ItemArray.GetValue(1).ToString();
DropDownListAssetName.SelectedItem.Text = dRow.ItemArray.GetValue(2).ToString();
DropDownListLocation.SelectedItem.Text = dRow.ItemArray.GetValue(3).ToString();
TextBoxLicence.Text = dRow.ItemArray.GetValue(4).ToString();
DropDownListType.SelectedItem.Text = dRow.ItemArray.GetValue(5).ToString();
DropDownListState.SelectedItem.Text = dRow.ItemArray.GetValue(6).ToString();
TextBoxInstall.Text = dRow.ItemArray.GetValue(7).ToString();
}
最后是下一个记录的按钮:
protected void ButtonNext_Click(object sender, EventArgs e)
{
if (inc != MaxRows - 1)
{
inc++;
NavigateCopies();
}
else
{
MessageBox.show("No more Rows");
}
}
如有任何帮助,我们将不胜感激。老实说,我不明白为什么数据集最初适用于导航方法,但第二次却不适用。我一直在用这个http://www.homeandlearn.co.uk/csharp/csharp_s12p7.html作为指南,他们的示例在页面加载上显示数据,当选择搜索参数时,显示我的数据。我不知道这是不是一个问题,但多一点信息永远不会有坏处!
在会话/Cache/ViewState中持久化DataSet
(其中哪一个是最适合您的解决方案)。这样,您就可以在回发之间检索DataSet
,并继续显示所需的数据。
以下是如何实现这一点(尽管是一个简单的例子),以及一篇深入研究asp.net中对象持久性的文章:asp.net对象持久性。