asp.net DetailsVeiw - 在插入LinkBut​​ton Selected时在下拉列表中插入一个项目

时间:2012-10-10 18:39:12

标签: asp.net

我是ASP.NET新手。我想在单击“新建”时添加新记录,将项目插入下拉列表。表单将从ItemTemplate切换到InsertTempplate

错误:

  

“System.NullReferenceException:对象引用未设置为   一个对象的实例。“

我的DetailsView中的这段代码。

    <ItemTemplate>
         <asp:Label ID="lblVendorName" 
        runat="Server" style="text-align:left; width:100%" 
        Text='<%# Eval("VendorName")%>' Width="70%"/>

    </ItemTemplate>    
    <InsertItemTemplate>
        <asp:DropDownList id="insertVendorName" datasourceid="VendorSqlDataSource"
            datatextfield="VendorName" DataValueField="VendorID"  
            OnSelectedIndexChanged="ddlVendor_SelectedIndexChanged" 
            runat="server" AutoPostBack="true"  />
        <asp:SqlDataSource ID="VendorSqlDataSource"  
        ConnectionString="<%$Connectionstrings:ConnectionString%>"
            SelectCommand="SELECT VendorID, VendorName 
                from MDF_Vendor"  runat="server">
        </asp:SqlDataSource>
    </InsertItemTemplate>

更新...下面是Link Bottons。

<asp:TemplateField>  
    <ItemTemplate> 
        <asp:LinkButton ID="btnedit" runat="server" 
            CommandName="Edit" Text="Edit"/>  |   
        <asp:LinkButton ID="btnInsert" runat="Server" 
            Text="New" CommandName="New" 
            OnClick="LinkButton_Click"  />  |  
        <asp:LinkButton ID="btnDelete" 
            runat="server" 
            CommandName="Delete" Text="Delete" />      | 
    </ItemTemplate>  

    <InsertItemTemplate>
    <asp:LinkButton ID="btnInsert" runat="Server" 
        Text="Insert" CommandName="Insert"/>    
    <asp:LinkButton ID="btncancel" runat="server" 
        CommandName="Cancel" Text="Cancel"/> 
    </InsertItemTemplate>

    <EditItemTemplate>                                                 
        <asp:LinkButton ID="btnupdate" runat="server" 
            CommandName="Update" Text="Update" />                  
        <asp:LinkButton ID="btncancel" runat="server" 
            CommandName="Cancel" Text="Cancel"/>       
    </EditItemTemplate>
</asp:TemplateField> 

我尝试了以下@Aghislas建议的代码(谢谢!)

protected void LinkButton_Click(object sender, EventArgs e)
{
    DropDownList ddlVendor = (DropDownList)DetailsView1.FindControl("insertVendorName"); 
    ddlVendor.Items.Insert(0, new ListItem("---Select---", "-1"));
} 

请帮忙。谢谢。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用此代码

<asp:LinkButton id="LinkButton1" 
       Text="Click Me" 
       OnClick="LinkButton_Click" 
       runat="server"/>


 protected void LinkButton_Click(Object sender, EventArgs e) 
 {
      var ddlVendor =(DropDownList)DetailsView1.FindControl("insertVendorName");

      ddlVendor.Items.Insert(0, new ListItem("---Select---", "-1"));
 }

注意:您删除Page_Load中的代码并移入Click delegate