2009-06-25 4 views
2

J'essaie d'utiliser le code-behind (Page_Load ou PreRender) pour définir une zone de texte date-heure dans un DetailsView afin qu'elle soit par défaut à une date-heure actuelle.ASP .NET - Définition de la valeur d'un TextBox DetailsView

Ce que j'ai essayé est (une des nombreuses variantes):

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

Mais tout ce que je reçois une erreur « NullReferenceException ».

Qu'est-ce que je fais mal?

Répondre

4

Vous pouvez utiliser les contrôles detailsview événement DataBound pour définir une valeur de votre detailsview comme ça:

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

code Derrière:

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 - bonne réponse –

+1

Merci Canavar. –

1

Pour ajouter à ce Canavar suggéré:

Pour utiliser sur un DetailsView attribuer comme ceci:

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

Et puis dans le code derrière:

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