0

この ASP.Net を使用して、ユーザーが DetailsView の [新規] ボタンをクリックしたときに、今日の日付が日付テキスト ボックスに表示されるようにして、実際にデータを挿入する前にテキスト ボックスに日付を表​​示できるようにします。

<InsertParameters>
    <asp:Parameter Name="ClassID" Type="Int32" />
    <asp:Parameter Name="StudentID" Type="Int32" />
    <asp:Parameter Name="Absent" Type="String" />
    <asp:Parameter Name="Late" Type="String" />
    <asp:Parameter Name="LateTimeArrivedAtSchool" Type="DateTime" />
    <asp:Parameter DbType="Date" Name="DateAttendanceTaken"  DefaultValue= "<%=DateTime.Now.ToString() %>"/>
</InsertParameters>

DefaultValue = "<%=DateTime.Now.ToString() %>" を使用しようとしましたが、テキスト ボックスに日付が表示されません。

これは、DetailsView にあるテキスト ボックスのマークアップです。

<asp:TemplateField 
    HeaderText="Attendance Date:" SortExpression="DateAttendanceTaken">

    <EditItemTemplate>
        <asp:TextBox 
            ID="TextBoxDateAttendanceTaken" 
            runat="server" 
            Text='<%# Bind("DateAttendanceTaken", "{0:MM/dd/yyyy}") %>'>
        </asp:TextBox>

        <asp:RequiredFieldValidator ID="RequiredFieldValidatorEditDate" runat="server" ControlToValidate="TextBoxDateAttendanceTaken" 
            ErrorMessage="Please enter the Attendance Date." Font-Bold="True" Font-Italic="True" ForeColor="Red" 
            SetFocusOnError="True" Display="Dynamic"></asp:RequiredFieldValidator>
    </EditItemTemplate>

    <InsertItemTemplate>
        <asp:TextBox 
            ID="TextBoxDateAttendanceTakenInsert" 
            runat="server" 
            Text='<%# Bind("DateAttendanceTaken", "{0:MM/dd/yyyy}") %>'>
        </asp:TextBox>

        <asp:RequiredFieldValidator ID="RequiredFieldValidatorInsertDate" runat="server" ControlToValidate="TextBoxDateAttendanceTakenInsert" 
            ErrorMessage="Please enter the Attendance Date." Font-Bold="True" Font-Italic="True" ForeColor="Red" 
            SetFocusOnError="True" Display="Dynamic"></asp:RequiredFieldValidator>
    </InsertItemTemplate>

    <ItemTemplate>
        <asp:Label 
            ID="LabelDateAttendanceTaken" 
            runat="server" 
            Text='<%# Bind("DateAttendanceTaken", "{0:MM/dd/yyyy}") %>'>
        </asp:Label>
    </ItemTemplate>

    <ItemStyle ForeColor="Blue" />
</asp:TemplateField>

* アップデート *

これを機能させるには、ここに示すように OnDataBinding を追加する必要があり、さらに、以下に示すようにコード ビハインド ファイルにハンドラーがあることを確認する必要があることがわかりました。

InsertItemTemplate マークアップ:

<InsertItemTemplate>
    <asp:TextBox 
        ID="TextBoxDateAttendanceTakenInsert" 
        runat="server" 
        Text='<%# Bind("DateAttendanceTaken", "{0:MM/dd/yyyy}") %>'
        OnDataBinding="TextBoxDateAttendanceTakenInsert_DataBinding">
    </asp:TextBox>

</InsertItemTemplate>

コード ビハインド ファイルのハンドラー:

Protected Sub TextBoxDateAttendanceTakenInsert_DataBinding(sender As Object, e As EventArgs)

    Dim txtBox As New TextBox
    txtBox = DetailsView.FindControl("TextBoxDateAttendanceTakenInsert")
    txtBox.Text = DateTime.Now.ToString("d")
End Sub
4

1 に答える 1

1

新しいボタンのポスト バックを使用して、ListView の挿入項目を取得し、テキスト ボックスを見つけることで、TextBoxDateAttendanceTakenInsertテキスト ボックスを設定できます。

テキストボックスの値を に設定しますDateTime.Now

挿入項目

protected void NewButtonClick(object sender, EventArgs e)
{
    //Code to change to set Insert
    //get insert item
    object control = MyDetailsView.FindControl("TextBoxDateAttendanceTaken")
    //check for null
    if(control != null){
        TextBox tBox = (TextBox)control; //cast to TextBox
        tBox.Text = DateTime.Now.ToString(); //set text
    }
}

VB:

Dim tBox As TextBox =  CType(MyDetailsView.FindControl("TextBoxDateAttendanceTaken"), TextBox)
tBox.Text = DateTime.Now.ToString

new がクリックされるたびに、挿入項目のテキストボックスを現在の日時に設定するだけです。

于 2013-01-08T16:03:56.473 に答える