2010-10-12 5 views
1

У меня есть довольно много списков radobuttonList в моей веб-форме ASP.net. Я динамически связывая их с использованием способа, показанным ниже:Динамическое заполнение RadiobuttonList

public static void PopulateRadioButtonList(DataTable currentDt, RadioButtonList currentRadioButtonList, string strTxtField, string txtValueField, 
      string txtDisplay) 
     { 
      currentRadioButtonList.Items.Clear(); 
      ListItem item = new ListItem(); 
      currentRadioButtonList.Items.Add(item); 
      if (currentDt.Rows.Count > 0) 
      { 
       currentRadioButtonList.DataSource = currentDt; 
       currentRadioButtonList.DataTextField = strTxtField; 
       currentRadioButtonList.DataValueField = txtValueField; 
       currentRadioButtonList.DataBind(); 
      } 
      else 
      { 
       currentRadioButtonList.Items.Clear(); 
      } 
     } 

Теперь я хочу, чтобы отобразить только первую букву DataTextField для RadioButton Item Text.

Например, если значение Хорошо я просто хочу для отображения G. Если Fair я хочу показать F.

Как сделать это в C#

Благодаря

ответ

3

Вы можете» т делать то, что вы хотите, когда вы делаете привязку, поэтому у вас есть 2 варианта:

  1. Измените данные, которые вы получите из таблицы, прежде чем сделать привязку.

  2. После связывания просматривайте каждый элемент и изменяйте его поле «Текст».

Итак, вы хотите, чтобы отобразить «только первую букву DataTextField для RadioButton Item Text», вы можете сделать:

currentRadioButtonList.DataSource = currentDt; 
currentRadioButtonList.DataTextField = strTxtField; 
currentRadioButtonList.DataValueField = txtValueField; 
currentRadioButtonList.DataBind(); 

foreach (ListItem item in currentRadioButtonList.Items) 
    item.Text = item.Text.Substring(0, 1); 

Если я неправильно понял вас, и вы хотите, чтобы отобразить первая буква в поле Значение, вы можете заменить последние две строки с:

foreach (ListItem item in currentRadioButtonList.Items) 
    item.Text = item.Value.Substring(0, 1); 
+0

Dan К сожалению, он не работает на strTxtField значения «VAL_ID» Вот почему это показывая V для всех значений. Если VAL_ID - это поле таблицы базы данных, но не фактическое значение. – acadia

+0

@acadia - Я не совсем понимаю, что вы говорите. С вашим исходным кодом (так без моего foreach) вы получаете «VAL_ID» для всех значений в RadioButtonList? –

+0

@acadia - Также см. Мое редактирование. –

0

вы можете добавить свойство к типу, который связывался (тот, который содержит хорошо, удовлетворительно, и т.д.) и связываются с это свойство. Если вы всегда будете использовать первую букву, вы могли бы сделать это как так (добавление в нулевых проверках, конечно):

public string MyVar { get; set; } 

    public string MyVarFirstChar 
    { 
     get { return MyVar.Substring(0, 2); } 
    }