2009-06-25 14 views
2

Ich versuche, das Code-Behind (PageLoad oder PreRender) zu verwenden, um ein Datum-Uhrzeit-Textfeld in einem DetailsView festzulegen, so dass es ein aktuelles Datum-Uhrzeit-Datum verwendet.ASP.NET - Festlegen des Werts eines DetailsView TextBox

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 bekommen, ist ein Fehler ‚Nullreferenceexception‘.

Was mache ich falsch?

Antwort

4

Sie Details verwenden können, steuert Databound-Ereignis einen Wert innerhalb Ihrer Details so einzustellen:

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

+1 - gute Antwort –

+1

Dank Canavar. –

1

hinzuzufügen, was Canavar vorgeschlagen:

Für Verwenden Sie eine DetailsView-Zuweisung wie folgt:

<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 hinter in dem Code:

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