2013-05-10 3 views
1

Я хочу выделить несколько значений из элемента управления gridview и показать его в четырех текстовых окнах. Это возможно? Сейчас я получаю следующее значение: enter image description hereПодстрочные значения в несколько текстовых полей

С помощью этого кода:

 var lblRef = new Label 
         { 
          Text = ((Label) row.FindControl("LabelAssignmentReference")).Text 
         }; 

     string valueTextBox = lblRef.Text; 
     int indexOfRefSwe = valueTextBox.IndexOf(",", StringComparison.Ordinal); 
     string valueRef = valueTextBox.Substring(0, indexOfRefSwe); 

     TextBoxReference.Text = valueRef; 

Но как я получить его в несколько значений? `TextBoxReference.Text = valueRef;

 TextBoxRefPhone.Text = "??"; 
     TextBoxRefEmail.Text = "??"; 
     TextBoxRefDesc.Text = "??";` 
+0

'lblRef.Split (новый [] {«»});' возвращает массив значений – stuartd

ответ

4

Это должно вам начать работу.

string[] splits = lblRef.Text.Split(','); 
Console.WriteLine(splits[0]); // refname 
Console.WriteLine(splits[1]); // 08712332 
Console.WriteLine(splits[2]); // [email protected] 
Console.WriteLine(splits[3]); // refdescription 

Я предлагаю также добавлять проверки достоверности, чтобы убедиться, что вы не получите каких-либо ошибок, такие как проверка, что splits.Length == 4, как и ожидалось.

Обратите внимание, что пробелы будут включены в начало трех последних элементов splits. Вы можете устранить те, которые используют метод Trim, или путем предоставления массива разделителей new[] {',', ' '} функции split и игнорировать пустые элементы (для этого есть перегрузка).

+0

я попробовал это один, но заполненные в моем текстовых вместо Console.WriteLine. .Trim() впоследствии. Благодаря ! – Kriistiian

1

Существует System.String.Split() -метод:

string[] parts = str.Split(new char[] {','}); 

После работы на части.

Пример из MSDN

using System; 

public class SplitTest { 
    public static void Main() { 

     string words = "This is a list of words, with: a bit of punctuation" + 
         "\tand a tab character."; 

     string [] split = words.Split(new Char [] {' ', ',', '.', ':', '\t' }); 

     foreach (string s in split) { 

      if (s.Trim() != "") 
       Console.WriteLine(s); 
     } 
    } 
} 
0

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

var values = lblRef.Text.Split(','); 

TextBoxRefPhone.Text = values[0]; 
if(values.Length>0) 
    TextBoxRefEmail.Text =values[1]; 
if(values.Length>1) 
    TextBoxRefDesc.Text = values[2]; 

Edit

есть Split метод перегрузки, которые принимают params. поэтому мы можем дать один персонаж

public string[] Split(params char[] separator); 

The Params ключевое слово позволяет указать параметр метода, который принимает аргумент где число аргументов является переменной.

+0

Сплит требует массив значений. – stuartd

+0

@stuartd Неверно. Вы можете предоставить один разделитель без массива. Метод имеет много перегрузок. – SimpleVar

+0

Чтобы уточнить, split будет принимать одно значение char, но если вы хотите использовать строку, то она будет передана в массиве. – stuartd

Смежные вопросы