jags@212 Ответов: 1

Добавьте строку в существующий dataview в ASP.NET


Нажмите на ссылку для просмотра

I have a asp.net page with User picker control which can take more than one names and filter out on click of Filter button for those particular entered names in UserPicker but it is filtering out one by one using dataview in the below code , I have a written the code but while looping it is taking the last name and displaying the records.

In this case how to Append a row for the given existing dataview.


Что я уже пробовал:

IEnumerator users = UserPicker.ResolvedEntities.GetEnumerator();
              while (users.MoveNext())
              {
                  SPUser selectedUser = web.EnsureUser(((Microsoft.SharePoint.WebControls.PickerEntity)(users.Current)).Key);
                  string strVendorUserName = selectedUser.LoginName.ToString();

                  if (strVendorUserName != null || ddlPermissionType.SelectedItem != null)
                  {
                      StringBuilder sb = new StringBuilder(string.Format("UserLoginName = '{0}'", strVendorUserName.Trim()));

                      dv.RowFilter = sb.ToString();

                      return dv;


                  }

1 Ответов

Рейтинг:
0

Richard Deeming

Объявите StringBuilder класс перед началом while петля. Комбинируйте несколько фильтров с OR. Назначьте RowFilter и верните Результат после того, как while петля.

Вы также должны быть в состоянии использовать foreach цикл, а не работа непосредственно с IEnumerator интерфейс.

var sb = new StringBuilder();

foreach (Microsoft.SharePoint.WebControls.PickerEntity item in UserPicker.ResolvedEntities)
{
    SPUser selectedUser = web.EnsureUser(item.Key);
    string strVendorUserName = selectedUser.LoginName;
    if (strVendorUserName != null || ddlPermissionType.SelectedItem != null)
    {
        if (sb.Length != 0) sb.Append(" OR ");
        sb.AppendFormat("UserLoginName = '{0}'", strVendorUserName.Trim()); // <-- Possible NullReferenceException here!
    }
}

dv.RowFilter = sb.ToString();
return dv;

NB: Глядя на свой if блок, ты веришь в это LoginName может вернуться null Но если это произойдет, и ddlPermissionType.SelectedItem является нет null, затем strVendorUserName.Trim() потерпит неудачу с собой NullReferenceException.


jags@212

Исключение Null reference было выброшено, нет ли какого-либо способа , как у нас есть одна строка, приходящая после фильтра строк dataview, если мы можем захватить одну строку в datatable и добавить последующую строку в datatable, которая будет исходить из отдельного фильтра строк dataview, то это может служить цели.

Richard Deeming

Как я объяснил в своем ответе, вы получите NullReferenceException если selectedUser.LoginName возвращается null, и ddlPermissionType.SelectedItem не является null.

Поскольку вы, похоже, не пользуетесь ddlPermissionType значение в любом месте, просто удалите этот чек из if блок.