ASP .NET - การตั้งค่าของกล่องข้อความ DetailView

ฉันกำลังพยายามใช้โค้ดหลัง (Page_Load หรือ PreRender) เพื่อตั้งค่ากล่องข้อความวันที่-เวลาใน DetailView เพื่อให้ค่าเริ่มต้นเป็นวันที่-เวลาปัจจุบัน

สิ่งที่ฉันได้ลองคือ (หนึ่งในหลายรูปแบบ):

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

แต่ทั้งหมดที่ฉันได้รับคือข้อผิดพลาด 'NullReferenceException'

ฉันทำอะไรผิด?


person John M    schedule 25.06.2009    source แหล่งที่มา


คำตอบ (2)


คุณสามารถใช้ตัวควบคุม detailview เหตุการณ์ DataBound เพื่อตั้งค่าภายใน detailview ของคุณดังนี้:

<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");     
    }
}
person Canavar    schedule 25.06.2009

หากต้องการเพิ่มสิ่งที่ Canavar แนะนำ:

สำหรับใช้กับการกำหนด DetailView เช่นนี้:

<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");
    }
}
person John M    schedule 26.06.2009