2 Stimmen

ASP.NET - Einstellen des Wertes einer DetailsView TextBox

Ich versuche, den Code-Behind (Page_Load oder PreRender) zu verwenden, um ein Datum-Zeit-Textfeld in einer DetailsView zu setzen, so dass es standardmäßig auf eine aktuelle Datum-Zeit.

Was ich versucht habe, ist (eine von vielen Varianten):

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

Aber alles, was ich bekomme, ist ein "NullReferenceException"-Fehler.

Was mache ich falsch?

4voto

Canavar Punkte 46926

Sie können detailsview Kontrollen DataBound Ereignis verwenden, um einen Wert innerhalb Ihrer detailsview wie das zu setzen:

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

Code Behind :

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");     
    }
}

1voto

John M Punkte 13482

Um den Vorschlag von Canavar zu ergänzen:

Zur Verwendung in einer DetailsView wie dieser zuweisen:

<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">

Und dann in dem Code dahinter:

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");
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X