как можно привязать gridview к массиву - PullRequest
1 голос
/ 17 июня 2011

Я хочу связать 2d массив с gridview.Как это можно сделать.Я также прилагаю свой код.Если есть какой-то другой путь, то также предложите мне.

        string sQS;
        string[] aQS;
        string pwd = "ebskey";
        string DR = Request.QueryString["DR"].ToString();
        DR = DR.Replace(' ', '+');
        sQS = Base64Decode(DR);
        DR = EBSHelper.Decrypt(pwd, sQS, false);
        aQS = DR.Split('&');
        int p1 = aQS.Length;
        string[,] pp = new string[p1,2];
        for (int i = 0; i < aQS.Length; i++)
        {
            string[] aParam = aQS[i].Split('=');
            pp[i,0] = aParam[0].ToString();
            pp[i,1] = aParam[1].ToString();

        }
        GridView1.DataSource = pp;
        GridView1.DataBind();

Ответы [ 2 ]

2 голосов
/ 17 июня 2011

Я бы попробовал что-то подобное вместо 2d массива.

var data = aQS.Select(s => new {Col1 = s.Split('=')[0], Col2 = s.Split('=')[1]});
GridView1.DataSource = data;
GridView1.DataBind();

Мне не нравится дважды вызывать Split(), но я не уверен, как обойти это.

или вы можете сделать вещи действительно простыми и создать простой класс

class RowData{
    public string Col1Value {get; set;}
    public string Col2Value {get; set;}
}

, и вы можете сделать

List<RowData> rows = new List<RowData>();
for (int i = 0; i < aQS.Length; i++)
 {
        string[] aParam = aQS[i].Split('=');
        RowData row = new RowData {Col1Data = aParam[0], Col2Data = aParam[1]};
        rows.Add(row);
 }

 GridView1.DataSource = rows;
 GridView1.DataBind();
2 голосов
/ 17 июня 2011

Как я понимаю, ваша входная строка выглядит так:

var inputString = "key1=value1&key2=value2&key3=value3";

Приведенный ниже код проанализирует строку, создаст список и свяжет его с сеткой.

var list = Regex.Matches(inputString, @"(?<key>\w+)=(?<value>\w+)(&|$)")
    .Cast<Match>()
    .Select(arg => new { Key = arg.Groups["key"].Value, Value = arg.Groups["value"].Value })
    .ToList();
GridView1.DataSource = list;
GridView1.DataBind();

Итак, ваш окончательный код будет выглядеть так:

string pwd = "ebskey";
string DR = Request.QueryString["DR"];
DR = DR.Replace(' ', '+');
string sQS = Base64Decode(DR);
DR = EBSHelper.Decrypt(pwd, sQS, false);

var list = Regex.Matches(DR, @"(?<key>\w+)=(?<value>\w+)(&|$)")
    .Cast<Match>()
    .Select(arg => new { Key = arg.Groups["key"].Value, Value = arg.Groups["value"].Value })
    .ToList();
GridView1.DataSource = list;
GridView1.DataBind();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...