从组合框选择的索引更改填充ASP.NET文本框

时间:2011-01-10 13:28:55

标签: asp.net

我是ASP.NET新手。

我有一个带有AJAX Combobox和TextBox的ASP.NET页面。组合框从数据库填充并具有ID值并显示名称。文本框应显示地址。我想要做的就是在“名称”组合框上的索引更改时更改“地址”文本框中的值。 然后能够更改地址并将其保存回数据库。 我该怎么做(简单?)任务?

到目前为止

代码......

<form id="form1" runat="server">
    <div>
        <asp:ComboBox ID="ComboBox1" runat="server" DataSourceID="AccessDataSource1" DataTextField="CompositeName"
            DataValueField="Id" MaxLength="0" Style="display: inline;" 
            AutoCompleteMode="SuggestAppend" 
            onselectedindexchanged="ComboBox1_SelectedIndexChanged">
        </asp:ComboBox>
        <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/StudentDB.accdb"
            SelectCommand="SELECT [Id], [Name], [Address] FROM [tblStudents]">
        </asp:AccessDataSource>
    </div>
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    </form>

3 个答案:

答案 0 :(得分:1)

尝试使用以下标记。我使用了DropDownList,可以用AJAX ComboBox替换它。 可以使用CSS和ItemTemplate进一步增强DetailsView。 您可以在CityTemplate中添加更多字段,例如City,Country等。

<asp:AccessDataSource DataFile="App_Data/Students.accdb"  ID="AccessDataSource1" 
         DataSourceMode='DataSet' SelectCommand='Select ID, [First Name], [Last Name] from Students'
        runat='server' >

    </asp:AccessDataSource>

     <asp:AccessDataSource DataFile="App_Data/Students.accdb"  ID="AccessDataSource2" 
        SelectCommandType="Text" SelectCommand='Select [ID], [Address] from [Students] where ID=@id'
        runat='server'>
        <SelectParameters>
            <asp:ControlParameter ControlID='DropDownList1' Name='id'/>
        </SelectParameters>
    </asp:AccessDataSource>

    <asp:DropDownList ID='DropDownList1' runat='server' AutoPostBack='true' DataSourceID='AccessDataSource1'
        DataTextField="First Name" DataValueField='ID'>
    </asp:DropDownList>

    <asp:DetailsView ID='DetailsView' runat="server" DataSourceID='AccessDataSource2' DataKeyNames='ID'>

        <Fields>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:TextBox ID='AddressTextBox' runat='server' Text='<%# Bind("Address") %>'></asp:TextBox>
                    <asp:Button ID='AddressSaveButton' runat='server' Text='Save' UseSubmitBehavior='true' />
                </ItemTemplate>
            </asp:TemplateField>
        </Fields>

    </asp:DetailsView>

答案 1 :(得分:0)

在您的ComboBox1_SelectedIndexChanged事件中。设置TextBox1.Text = CurrentAddress变量。 实际上,我不是直接在asp中绑定命令的忠实粉丝。

我会创建一个名为LoadMyComboBox()的Sub,它将在Page_Load()事件中触发。

我会假设你有一个按钮或某种类型的事件会被解雇以执行更新? TextChanged在这里会有点矫枉过正。添加更新按钮,然后在后面的代码中构建更新命令将处理您的更新。完成更新后,您可以再次调用LoadMyComboBox()来刷新组合框以刷新任何必要的更改,并在此时对文本框执行任何操作。

答案 2 :(得分:0)

你可以通过使用下拉列表本身来做到这一点。在DropDownList的SelectedIndexChanged事件中,根据下拉列表选择将地址绑定到TextBox控件,并将其作为参数传递并保存在数据库中。