二级联动;字符串转一维数组,一维数组转二维数,二维数组转DataSet

前台页面:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="gzrw_Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>测试</title>     
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <div>

         
            <br />
            <telerik:RadComboBox ID="ddlStyle" Skin="Windows7" runat="server" Filter="Contains" Culture="zh-CN" AutoPostBack="true" OnSelectedIndexChanged="ddlStyle_SelectedIndexChanged">
                <Items>
                    <telerik:RadComboBoxItem runat="server" Text="请选择周期类型" Value="" />
                    <telerik:RadComboBoxItem runat="server" Text="周" Value="周" />
                    <telerik:RadComboBoxItem runat="server" Text="月" Value="月" />
                </Items>
            </telerik:RadComboBox>
            <telerik:RadComboBox ID="ddlShow" Skin="Windows7" runat="server" Filter="Contains" Culture="zh-CN">
            </telerik:RadComboBox>
            <br />
            <asp:TextBox ID="my" runat="server" Text="fa"></asp:TextBox>

        </div>
    </form>
</body>
</html>

后台页面:

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;

public partial class gzrw_Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            //String SData = "1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9,10 10,11 11,12 12,13 13,14 14,15 15,16 16,17 17,18 18,19 19,20 20,21 21,22 22,23 23,24 24,25 25,26 26,27 27,28 28,29 29,30 30,31 31";

            //String[] x = StringSplit(SData, ",");
            //String[,] y = new String[x.Length, 2];

            /初始化y
            //String[] temp = null;
            //for (int i = 0; i < x.Length; i++)
            //{
            //    temp = StringSplit(x[i], " ");
            //    for (int j = 0; j < 2; j++)
            //    {
            //        y[i, j] = temp[j];
            //    }
            //}

            //DataTable dt = Convert(new String[] { "value", "text" }, y);
            //ddlShow.DataValueField = "value";
            //ddlShow.DataTextField = "text";
            //ddlShow.DataSource = dt.DefaultView;
            //ddlShow.DataBind();
        }
    }

    protected void ddlStyle_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
    {
        ddlShow.Text = "";
        LoadddlShow(e.Value);
        my.Text = e.Value;
    }
    

    protected void LoadddlShow(string continentID)
    {
        
        String SData = String.Empty;
        if (continentID == "月")
        {
            SData = "1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9,10 10,11 11,12 12,13 13,14 14,15 15,16 16,17 17,18 18,19 19,20 20,21 21,22 22,23 23,24 24,25 25,26 26,27 27,28 28,29 29,30 30,31 31";
        }
        else if (continentID == "周")
        {
            SData = "一 一,二 二,三 三,四 四,五 五,六 六,七 七";
        }
        else
        {
            return;
        }
        String[] x = StringSplit(SData, ",");
        String[,] y = new String[x.Length, 2];

        ///初始化y
        String[] temp = null;
        for (int i = 0; i < x.Length; i++)
        {
            temp = StringSplit(x[i], " ");
            for (int j = 0; j < 2; j++)
            {
                y[i, j] = temp[j];
            }
        }

        DataTable dt = Convert(new String[] { "value", "text" }, y);
        ddlShow.DataValueField = "value";
        ddlShow.DataTextField = "text";
        ddlShow.DataSource = dt.DefaultView;
        ddlShow.DataBind();

    }


    /// <summary>
    /// 分割字符串为数组
    /// </summary>
    /// <param name="strSource"></param>
    /// <param name="strSplit"></param>
    /// <returns></returns>
    public string[] StringSplit(string strSource, string strSplit)
    {
        string[] strtmp = new string[1];
        int index = strSource.IndexOf(strSplit, 0);
        if (index < 0)
        {
            strtmp[0] = strSource;
            return strtmp;
        }
        else
        {
            strtmp[0] = strSource.Substring(0, index);
            return StringSplit(strSource.Substring(index + strSplit.Length), strSplit, strtmp);
        }
    }
    /// <summary>
    /// 采用递归将字符串分割成数组
    /// </summary>
    /// <param name="strSource"></param>
    /// <param name="strSplit"></param>
    /// <param name="attachArray"></param>
    /// <returns></returns>
    private string[] StringSplit(string strSource, string strSplit, string[] attachArray)
    {
        string[] strtmp = new string[attachArray.Length + 1];
        attachArray.CopyTo(strtmp, 0);

        int index = strSource.IndexOf(strSplit, 0);
        if (index < 0)
        {
            strtmp[attachArray.Length] = strSource;
            return strtmp;
        }
        else
        {
            strtmp[attachArray.Length] = strSource.Substring(0, index);
            return StringSplit(strSource.Substring(index + strSplit.Length), strSplit, strtmp);
        }
    }

    /// <summary>  
    /// 反一个M行N列的二维数组转换为DataTable  
    /// </summary>  
    /// <param name="ColumnNames">一维数组,代表列名,不能有重复值</param>  
    /// <param name="Arrays">M行N列的二维数组</param>  
    /// <returns>返回DataTable</returns>  
    /// <remarks>Y法</remarks>  
    public static DataTable Convert(string[] ColumnNames, string[,] Arrays)
    {
        DataTable dt = new DataTable();

        foreach (string ColumnName in ColumnNames)
        {
            dt.Columns.Add(ColumnName, typeof(string));
        }

        for (int i1 = 0; i1 < Arrays.GetLength(0); i1++)
        {
            DataRow dr = dt.NewRow();
            for (int i = 0; i < ColumnNames.Length; i++)
            {
                dr[i] = Arrays[i1, i].ToString();
            }
            dt.Rows.Add(dr);
        }

        return dt;

    }

   
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 C# 中的 ExcelDataReader 库来读取 Excel 文件中的据。下面是一个示例代码,演示如何读取一个名为 "data.xlsx" 的 Excel 文件中的据: ```csharp using System; using System.Data; using System.IO; using ExcelDataReader; class Program { static void Main(string[] args) { // 将 Excel 文件读入内存流 FileStream stream = File.Open("data.xlsx", FileMode.Open, FileAccess.Read); IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); // 读取 Excel DataSet result = excelReader.AsDataSet(); DataTable table = result.Tables[0]; // 将换为二维数组 int rowCount = table.Rows.Count; int colCount = table.Columns.Count; string[,] data = new string[rowCount, colCount]; for (int row = 0; row < rowCount; row++) { for (int col = 0; col < colCount; col++) { data[row, col] = table.Rows[row][col].ToString(); } } // 打印二维数组中的据 for (int row = 0; row < rowCount; row++) { for (int col = 0; col < colCount; col++) { Console.Write("{0}\t", data[row, col]); } Console.WriteLine(); } // 关闭 Excel 据读取器和内存流 excelReader.Close(); stream.Close(); } } ``` 在上面的代码中,我们首先使用 `File.Open` 方法将 Excel 文件读入内存流中,然后使用 `ExcelReaderFactory.CreateOpenXmlReader` 方法创建一个 Excel 据读取器。接着,我们使用 `excelReader.AsDataSet` 方法读取 Excel 据,并将其换为 `DataSet` 对象。然后,我们从 `DataSet` 中获取第一个表格,并将其换为 `DataTable` 对象。接着,我们使用两个循环将 `DataTable` 中的换为二维数组。最后,我们打印二维数组中的据,并关闭 Excel 据读取器和内存流。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值