プロジェクトを作成するためにasp.net c#を使用しています。データベースから取得した車のモデルを含むドロップダウン リストがあるパーツを作成する必要があります。その後、ドロップダウン リストで新しい値が選択されるたびに (ページ全体を更新せずに) パネルのコンテンツを変更する必要があります。
次のコードを使用してみました:
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" DataTextField="MODEL" Height="39px" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" Width="151px">
</asp:DropDownList>
<asp:ScriptManager id="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<br />
<div id="finalDisplay" runat="server"></div>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger controlid="DropDownList1" EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
ここで使用すべき構造は updatePanel だと思います。したがって、データベースにも保存されているすべてのコメントを表示するには、id finalDisplay を持つ div が必要です。これが私のコードです:
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
//get car id from database
string model = DropDownList1.SelectedValue.ToString();
string sql1 = "SELECT CAR_ID FROM CARS WHERE MODEL='" + model + "'";
string[] attr1 = { "CAR_ID"};
List<String> cid = getList(sql1, attr1);
string car_id = cid[0].ToString().Trim();
//get all comments stored in the database for that car
string sql2 = "SELECT USER_ID,CONTENT FROM COMMENTS where car_id='" + car_id + "'";
string[] attr2 = { "CONTENT" };
List<String> contents = getList(sql2, attr2);
string class_names= "usernames";
string class_contents= "contents";
for (int i = 0; i < contents.Count-1; i++) {
string uid = contents[i];
string tmp_sql = "Select user_name from users where user_id='" + uid + "'";
string[] tmp_attr={"USER_NAME"};
List<String> tmp_list=getList(tmp_sql,tmp_attr);
finalDisplay.InnerHtml += "<p class="+class_names+">" + tmp_list[0] + ":</p>";
finalDisplay.InnerHtml += "<p class="+class_contents+">" + contents[i + 1] + "</p>";
i = i + 1;
}
}
id finalDisplay の div では何も起こらず、空です。私は何を間違っていますか?初めてajaxを使用します(これがajaxの場合でも)。