Click here to Skip to main content
15,890,690 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi,
I made a custom button in detailsview. When it clicked, detailsview mode will change to insert mode. After that, values in viewmode will be copied to textbox or dropdownlist in details view. Here's my code:
HTML
Protected Sub DetailsView1_ItemCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewCommandEventArgs) Handles DetailsView1.ItemCommand
    Dim klasifikasi As New tbKlasifikasi
    If e.CommandName = "Revisi" Then
        Dim kelas As Label = CType(DetailsView1.FindControl("LabelKelas"), Label)
        Dim NoUrut As Label = CType(DetailsView1.FindControl("LabelNoUrut"), Label)
        Dim revisi As Label = CType(DetailsView1.FindControl("LabelRevisi"), Label)
        DetailsView1.ChangeMode(DetailsViewMode.Insert)
        Dim kelas1 As DropDownList = CType(DetailsView1.FindControl("DDIdKelas"), DropDownList)
        Dim NoUrut1 As TextBox = CType(DetailsView1.FindControl("TBNoUrut"), TextBox)
        Dim revisi1 As TextBox = CType(DetailsView1.FindControl("TBNoRevisi"), TextBox)
        kelas1.SelectedValue = kelas.Text.Trim()
        NoUrut1.Text = NoUrut.Text.Trim()
        revisi1.Text = Format(revisi.Text + 1, "00").Trim()
    End If
End Sub


Above code returns error : Object reference not set to an instance of an object.

Any suggestions would be very appreciated.
Thanks,
AM
Posted
Comments
DamithSL 14-Nov-14 22:01pm    
how your DetailsView defined in aspx page?
myrepvblic 14-Nov-14 23:40pm    
I use linqdatasource. Actually, I already get values from variables: kelas, nourut and revisi, but, when I put them on kelas1, nourut1 and revisi1, it returns error.
DamithSL 15-Nov-14 1:05am    
are those controls in your insert template?
myrepvblic 15-Nov-14 7:31am    
Yes, they are.

1 solution

XML
<InsertItemTemplate>
    <asp:TextBox ID="txtUserID" runat="server" Text='<%#Bind("UserIDField") %>'></asp:TextBox>
</InsertItemTemplate>
<InsertItemTemplate>
    <asp:TextBox ID="txtUserName" runat="server" Text='<%#Bind("UserNameField") %>'></asp:TextBox>
</InsertItemTemplate>
                                                                                    
Protected Sub DetailsView_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles DetailsView.DataBound

    If DetailsView.CurrentMode = DetailsViewMode.Insert Then

        DirectCast(DetailsView.FindControl("txtUserID"), TextBox).Text=CurrentUID()
        DirectCast(DetailsView.FindControl("txtUserName"), TextBox).Text=GetUserName(CurrentUID())

    End If

End Sub




If check it another solution

XML
<div align="center">
    <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False"
        DataKeyNames="RegistrationID" DataSourceID="SqlDataSourceFBReg"
        DefaultMode="Insert" Height="50px"
        Width="55%" OnItemInserted="NFLElim" >
        <Fields>
            <asp:BoundField DataField="RegistrationID" HeaderText="RegistrationID"
                InsertVisible="False" ReadOnly="True" SortExpression="RegistrationID" />
            <asp:BoundField DataField="UserName" HeaderText="One Season User Name"
                SortExpression="UserName" />
            <asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email" />


C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class NFLElim_Reg : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            DetailsView1.DefaultMode = DetailsViewMode.Insert;
            if (DetailsView1.FindControl("UserName") != null)
            {
                TextBox txt1 = (TextBox)DetailsView1.FindControl("UserName");
                txt1.Text = User.Identity.Name.ToString();
            }
        }

    }
    protected void NFLElim(object sender, DetailsViewInsertedEventArgs e)
    {
        Response.Redirect("Account.aspx");
    }

}
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900