如何从数据集中移除数据表?

3

.aspx 代码:

<%@ 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 的代码后台:

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";

        }
    }
}

我的代码有问题,我想在点击 Button2_Click 作为重置按钮时从 dataset 中删除 datatable。但是我在这里的代码中遇到了错误:

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

它说:

无法将类型“void”隐式转换为“System.Data.DataTable”

是将我的 datasetdatatable 传递到函数 Button2_Click() 上的问题吗?

4个回答

6
你只需要这个。
selectedData.Tables.Remove(dt);

但是,最好先检查DataSet中是否包含您要删除的表格。另外,请检查Gianni B所指出的DataTable是否可以从DataSet中删除。

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

Remove方法不返回任何内容,它的返回类型void。你试图将Remove方法返回的datatable赋值给变量,但实际上它并不返回任何内容。


1
我还会检查我的数据集是否包含该表格,以及该表格是否可以用以下方式移除:if(selectedData.Tables.Contains(dt.name) && selectedData.Tables.CanRemove(dt)) - Gianni B.

4

您所写的那行代码

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

这是错误的,因为remove方法不返回任何内容。

所以你需要修改你的代码为

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

首先,您需要在button1和button2之外定义数据集 - 即集中的位置。在您的代码中,在button1内定义了一个未知于button2的数据集。然后您可以将此代码编写在button2内部。 - Chandan Kumar

3

试试这个:

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);

0

尽管输入了TableName,但它并不是相同的Datatable,因此ds.Tables.Remove无法正常工作。 这对我有用。

DataTable dt = new DataTable();

int i = ds.Tables.IndexOf(dt.TableName);

dt = ds.Tables[i];

ds.Tables.Remove(dt);

在这种情况下,是正确的 - 只是正在寻找返回代码,而不是预期的内容。 - TristanK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接