ASP .NET - Установка значения текстового окна DetailsView

2

Я пытаюсь использовать код-позади (Page_Load или PreRender), чтобы установить текстовое поле даты-времени в DetailsView, чтобы оно по умолчанию использовало текущую дату-время.

Я попытался (один из многих вариантов):

protected void DetailsView2_PreRender(object sender, EventArgs e)
{
        ((TextBox)DetailsView2.FindControl("date_time")).Text = 
                  DateTime.Now.ToString("d");     
}

Но все, что я получаю, является ошибкой "NullReferenceException".

Что я делаю неправильно?

Теги:

2 ответа

4
Лучший ответ

Вы можете использовать элементы управления представлением данных DataBound для установки значения в вашем представлении данных следующим образом:

<asp:Label ID="DetailsView2" runat="server" OnDataBound="DetailsView2_DataBound">
</asp:Label>

Код за:

protected void DetailsView2_DataBound(object sender, EventArgs e)
{
    DetailsView myDetailsView = (DetailsView)sender;
    if(myDetailsView.CurrentMode == DetailsViewMode.Edit)
    {
        ((TextBox)myDetailsView.FindControl("date_time")).Text = DateTime.Now.ToString("d");     
    }
}
  • 1
    +1 - хороший ответ
  • 1
    Спасибо, Монстр.
1

Чтобы добавить к тому, что предложил Канавар:

Для использования в DetailsView выполните следующие действия:

<asp:DetailsView ID="DetailsView2" runat="server" AutoGenerateRows="False" 
    CellPadding="4" DataKeyNames="details_id" DataSourceID="SqlDataSource4" 
    DefaultMode="Insert" ForeColor="#333333" GridLines="None" Height="50px" 
    Width="125px" 
     AllowPaging="True"  OnPreRender="DetailsView2_DataBound">

И затем в коде позади:

protected void DetailsView2_DataBound(object sender, EventArgs e)
{
    DetailsView myDetailsView = (DetailsView)sender;
    //Edit
    if (myDetailsView.CurrentMode == DetailsViewMode.Edit)
    {
        ((TextBox)myDetailsView.FindControl("TextBox2")).Text = DateTime.Now.ToString("g");
    }
    //Insert
    else if (myDetailsView.CurrentMode == DetailsViewMode.Insert)
    {
        ((TextBox)myDetailsView.FindControl("TextBox2")).Text = DateTime.Now.ToString("M/d/yyyy HH:mm");
    }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню