Обрезать значения в подробном представлении asp.net при привязке данных - PullRequest
0 голосов
/ 08 июля 2010

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

Я знаю, что мог бы добавить обработчик события для события с привязкой к данным и установить все значения одно за другим, но это приложение, которое существовало до моей работы, и в нем более 40 значенийвсе в текстовых полях с кажущимися случайными именами, которые не имеют ничего общего со значениями, которые они представляют, или с очевидной схемой именования.

Я подумал, что, возможно, есть способ перебрать свойство DetailsView.Fields, ноне мог ничего понять и там.Мне также не разрешено менять схему с CHAR на VARCHAR.Любые другие быстрые идеи?Существует большая вероятность того, что эта страница снова изменится, и я хотел бы что-то, что может решить эту проблему для любых новых полей, добавленных в будущем без дополнительной работы.К сожалению, в настоящее время его модернизация не является приоритетной задачей, поэтому быстрое решение проблемы головной боли, связанной с использованием этого чудовища, - это все, что мне нужно.

1 Ответ

4 голосов
/ 08 июля 2010

Отказ от ответственности: я использовал это в GridView, а не в DetailsView, но концепция та же.

Создайте EditItemTemplateField, привяжите данные к текстовому полю, преобразуйте их в строку и обрежьте строку.

<Fields>
    <asp:TemplateField HeaderText="FirstName">
        <EditItemTemplate>
            <asp:TextBox ID="txtFirstName" Runat="server" Text='<%#Bind("FirstName").ToString().Trim() %>'/>
        </EditItemTemplate>
    </asp:TemplateField>
</Fields>

РЕДАКТИРОВАТЬ: Это не работает, так как вы не можете выполнять преобразования при привязке данных, только когда Eval используется, к сожалению.

Альтернативой является перебирать каждый элемент управления при обновлении DetailsView.

void DetailsView1_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
{
    for (int i = 0; i < e.NewValues.Count; i++)
    {
        if (e.NewValues[i] != null)
        {
            e.NewValues[i] = e.NewValues[i].ToString().Trim();
        }
    }
}

Обратите внимание, в этом примере предполагается, что все элементы управления на вашей странице являются строками, в противном случае вам придется исключить их.

...