How to remove datatable from dataset?

19,437

Solution 1

You only need this

selectedData.Tables.Remove(dt);

But it would be better if you first check that DataSet contains the table which you are trying to remove. Also check if the DataTable can be removed from DataSet as pointed by Gianni B.

if(selectedData.Tables.Contains(dt.name) && selectedData.Tables.CanRemove(dt))
   selectedData.Tables.Remove(dt);

Remove method does not return anything. It's return type is void You are trying to assign a datatable returned by Remove method while actually it doesn't return anything

Solution 2

The line which you have written

DataTable dt = selectedData.Tables.Remove(dt);

is wrong, as remove method does not return anything.

So you need to change your code as

selectedData.Tables.Remove(dt);
if(selectedData != null && selectedData.Tables.Count > 0)
{
   DataTable dt = selectedData.Tables[0];
}

Solution 3

Try this:

DataTable dtDelete = new DataTable();
dtDelete = ds_RecipeData.Tables[0]
if (ds_RecipeData.Tables.Contains(dtDelete.TableName))
    if (ds_RecipeData.Tables.CanRemove(dtDelete))
      ds_RecipeData.Tables.Remove(dtDelete);
Share:
19,437
laurence keith albano
Author by

laurence keith albano

A Computer Engineer. Music enthusiasts, Programmer.

Updated on June 04, 2022

Comments

  • laurence keith albano
    laurence keith albano almost 2 years

    .aspx code:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SearchCustomer.aspx.cs" Inherits="WebApplication1.eyeofheaven.SearchCustomer" %>
    
    <!DOCTYPE html>
    <html lang="en" xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
    <link rel="stylesheet" type="text/css" href="StyleSheets/SearchCustomerStyle.css">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
    <title>Search Customer</title>
    </head>
    <body>
    <form id="form1" runat="server">
     <div class="row">
        <div class="twelve columns">
                <!-- Header-->
                <div class="container">
                    <nav role="navigation" class="navbar navbar-inverse navbar-fixed-top">
                        <!-- Brand and toggle get grouped for better mobile display -->
                        <div class="navbar-header">
                            <button type="button" data-target="#navbarCollapse" data-toggle="collapse" class="navbar-toggle">
                                <span class="sr-only">Toggle navigation</span>
                                <span class="icon-bar"></span>
                                <span class="icon-bar"></span>
                                <span class="icon-bar"></span>
                            </button>
                        </div>
                        <!-- Collection of nav links, forms, and other content for toggling -->
                        <div id="navbarCollapse" class="collapse navbar-collapse">
                            <ul class="nav navbar-nav">
                                <li><a href="EyeOfHeaven.aspx">Home</a></li>
                                <li class="dropdown">
                                    <a data-toggle="dropdown" class="dropdown-toggle active" href="#">Search<b class="caret"></b></a>
                                    <ul role="menu" class="dropdown-menu">
                                        <li><a href="SearchCustomer.aspx">Search Form(Customer)</a></li>
                                        <li><a href="SearchVehicle.aspx">Search Form(Vehicle)</a></li>
                                    </ul>
                                </li>
                            </ul>
                        </div>
                    </nav>
                </div>
        </div>
    </div>
    
    <!-- Search form customer-->
    <div id="searchcustomer" class="page-header">
        <h3><span class="glyphicon glyphicon-th-large"></span>Search Customer</h3>
    </div>
    
    <div class="row">
        <div class="col-md-4">
            <input type="text" runat="server" id="search" size="20" class="form-control" placeholder="Customer ID">
        </div>
        <div class="col-md-4">
            <select class="form-control" runat="server" id="Country">
                <option value="select" selected disabled>Search by Country</option>
                <option value="A:C ESTUDIO">A:C ESTUDIO</option>
                <option value="Aaron McEwen-194712">Aaron McEwen-194712</option>
                <option value="Accra">Accra</option>
                <option value="Adoany">Adoany</option>
                <option value="Aduanas">Aduanas</option>
                <option value="Alex Sanchez-259029">Alex Sanchez-259029</option>
                <option value="ALG Consulting-288078">ALG Consulting-288078</option>
                <option value="Algeria">Algeria</option>
                <option value="Algimantas Ramaskevicius">Algimantas Ramaskevicius</option>
            </select>
        </div>  
    
        <div class="col-md-4">
            <select class="form-control" runat="server" id="Currency">
                <option value="selected" selected disabled>Search by Currency</option>
                <option value="AUD">AUD (Australian Dollar)</option>
                <option value="EUR">EUR (Euro)</option>
                <option value="GBP">GBP (United Kingdom Pounds)</option>
                <option value="JPY">JPY (Japan Yen)</option>
                <option value="NZD">NZD (New Zealand Dollar)</option>
            </select>
        </div>
    </div>
    
    <div class="row">
        <div class="col-md-4">
    <button type="button" runat="server" onserverclick="Button1_Click" id="searchinfo" class="btn btn-primary"><span class="glyphicon glyphicon-search"></span> Search Info</button>
    <button type="button" runat="server" onserverclick="Button2_Click" id="Button2" class="btn btn-danger"><span class="glyphicon glyphicon-repeat"></span>Reset</button>
        </div>
    </div>
    <!-- Information Table-->
    <div id="gridview">
        <asp:GridView runat="Server" id="data" CssClass="table table-striped table-bordered table-responsive">
        </asp:GridView>
    </div>
    
    </form>
    </body>
    </html>
    

    .aspx code behind:

    using MSSQLConnector;
    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Data.SqlClient;
    using System.Linq;
    using System.Text;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    namespace WebApplication1.eyeofheaven
    {
        public partial class SearchCustomer : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
            }
            protected void Button1_Click(object sender, EventArgs e)
            {
    
                MSConnector connector = new MSConnector();
                connector.ConnectionString = "SERVER=xbetasql,52292;UID=username;Password=secret;DATABASE=ATDBSQL;";
    
                string customer = (this.search.Value);
                string country = (this.Country.Value);
                string idcurrency = (this.Currency.Value);
                string query = null;
    
                if (country != "select")
                {
                    if (idcurrency != "selected")
                    {
                        query = "select * from customer where country = '" + country + "' and idcurrency = '" + idcurrency + "'";
                    }
                    else
                    {
                        query = "select * from customer where country = '" + country + "'";
                    }
                }
                DataSet selectedData = connector.ExecuteQuery(query);
                DataTable dt = selectedData.Tables[0];
                if (dt.Rows.Count > 0)
                {
                    data.DataSource = dt;
                    data.DataBind();
                }
                else
                {
                    Response.Write("<script>alert('No Data Found.')</script>");
                }
            }
            protected void Button2_Click(object sender, EventArgs e, MSConnector connector, string query)
            {
                DataSet selectedData = connector.ExecuteQuery(query);
                DataTable dt = selectedData.Tables.Remove(dt);
                this.search.Value = "";
                this.Country.Value = "select";
                this.Currency.Value = "selected";
    
            }
        }
    }
    

    I have a problem in my code, I want to remove the datatable from dataset when I click on Button2_Click as a reset button for all. But I have an error in my code in here:

    DataTable dt = selectedData.Tables.Remove(dt);
    

    It says:

    Cannot implicitly convert type 'void' to 'System.Data.DataTable'

    Does passing my dataset and datatable is the problem on the function Button2_Click()?

  • Chandan Kumar
    Chandan Kumar almost 9 years
    first of all you need to define your dataset outside of button1 and button2 - means centralized place. in your code, inside button1 you are defining your dataset which is unknown to button2. Then you can write this code inside button2.
  • Gianni B.
    Gianni B. almost 9 years
    I would also check if my dataset contains the table and if the table can be removed with this: if(selectedData.Tables.Contains(dt.name) && selectedData.Tables.CanRemove(dt))
  • TristanK
    TristanK about 2 years
    In this case, it was right - it was just that a return code was being sought, and wasn't what was expected.