我是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>
答案 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控件,并将其作为参数传递并保存在数据库中。