指定的数据源不包含任何数据成员。 [英] The specified data source does not contain any data members.

查看:102
本文介绍了指定的数据源不包含任何数据成员。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



以下代码中出现异常

指定的数据源不包含任何数据成员。请帮我找出解决方案。 。



Hi,
Here in this code below exception is arising
The specified data source does not contain any data members.Please,help me to find out the solution..

private void deleteRows(string selectedid, string tablename)
{
    StringBuilder sqlQuery = new StringBuilder();
    selectedid = selectedid.TrimEnd(',') ;
    StringBuilder whereClause = new StringBuilder();
    whereClause.Append(" WHERE BookingID IN ('" + selectedid + "') ");
    sqlQuery.Append(" DELETE FROM ");
    sqlQuery.Append(tablename + whereClause.ToString());
    try
    {
        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["BuckshawHomesConnectionString"].ConnectionString);
        conn.Open();
        SqlCommand cmd;


        cmd = new SqlCommand(sqlQuery.ToString());
        cmd.Connection = conn;
        DataSet dsClaimCat = new DataSet();


        SqlDataAdapter dapt = new SqlDataAdapter(cmd);
        dapt.Fill(dsClaimCat);
        grid.DataSource = dsClaimCat;
        grid.DataBind();
        conn.Close();
        lblMessage.Visible = true;
        lblMessage.Text = "Record(s) Deleted";
    }
    catch (Exception ex)  //Exception here
    {
        lblMessage.Visible = true;
        lblMessage.Text = ex.Message;
    }
}



其余代码如下:




Rest of the code as follows:

protected void btnDelete_Click(object sender, EventArgs e)
{
  string strMultiIds;
  List<object> selectedRowList;


  strMultiIds = string.Empty;
  selectedRowList = (grid.GetSelectedFieldValues(new string[] { "BookingID" }));
  if (selectedRowList.Count == 0)
  {
      //System.Windows.Forms.MessageBox.Show("Please Select Atleast one Record to Delete");
      //return;
  }


  for (int i = 0; i < selectedRowList.Count; i++)
  { strMultiIds += selectedRowList[i].ToString() + ","; }


  strMultiIds.TrimEnd(',');
  try
  {
      delete(strMultiIds.TrimEnd(','));
  }
  catch (Exception ex)
  {
      lblMessage.Visible = true;
      lblMessage.Text = ex.Message;
  }
  BindGrid();
}


private void delete(string p)
{
  if (p.Equals(""))
      return;
  try
  {
      deleteRows(p, "tblBooking");
  }
  catch (Exception ex)
  {
      lblMessage.Visible = true;
      lblMessage.Text = ex.Message;
  }
}

推荐答案

哦,亲爱的...

Oh, dear...
whereClause.Append(" WHERE BookingID IN ('" + selectedid + "') ");



假设 selectedid 包含

1,2,3,4



whereClause变为:


The whereClause becomes:

WHERE BookingID IN ('1,2,3,4')



这意味着将将BookingID与单个字符串值进行比较。

为了做你做的事想要,你需要 selectedid 来包含:


Which means that the BookingID will be compared against a single string value.
To do what you want, you need selectedid to contain:

'1', '2', '3', '4'

并且您的代码为:

and your code to be:

whereClause.Append(" WHERE BookingID IN (" + selectedid + ") ");


for SqlDataAdapter 您需要提供select sql语句。你搞砸了删除和数据选择。

单独处理删除。删除记录后,可以重新加载gridview数据。
for SqlDataAdapter you need to give select sql statement. You are messed up with delete and data selection at ones.
Handle delete separately. after you done deleting record, you can reload the gridview data.


这篇关于指定的数据源不包含任何数据成员。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆