aspx ページに dsucTopLeft と dsucTopRight の 2 つのユーザー コントロールがあります。各ユーザー コントロールには、値を選択するためのドロップダウン リストがあります。
aspx ページには「保存」ボタンがあります。
ボタンの OnClickEvent で、これらのユーザー コントロール (ドロップダウン リストから値を返す) からデータを取得します。これらの値をデータベースに挿入する必要があります。ただし、ボタンをクリックすると、これらの値は 0 に設定されます。
これらの値をどのように保持しますか?
コード:
親テンプレート.aspx
<div class="leftDashboard">
<uc:dsuc ID="dsucTopLeft" runat="server" />
</div>
<div id="rightDashboard">
<uc:dsuc ID="dsucTopRight" runat="server" />
</div>
ボタンもあります:
<asp:Button ID="SaveButton" runat="server" OnClick="SaveButton_Click" Text="Save Dashboard" />
これは、ボタンの分離コードです。
protected void SaveButton_Click(object sender, EventArgs e)
{
//If the mode is "CREATE", then it needs to insert the information about dashboard and the charts it contains
for (int i = 0; i < dsuc.Length; i++)
{
dsuc[i].dashboardId = dashboardId;
if (dsuc[i].chartId != 0) //Here, the chartId remains 0
dsuc[i].insert();
}
}
dsuc は配列です。次の方法で入力されています。
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
dsuc[0]=dsucTopLeft;
dsuc[1]=dsucTopRight;
}
}
ユーザーコントロール:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
initializeDropDownList();//It initializes the drop down list
}
}
public void insert()
{
//It inserts into database
}
protected void chartDDLSelectedIndexChanged(object sender, EventArgs e)
{
oldChartId = chartId;
String chartTitle = chartDropDownList.SelectedItem.Text;
if (chartTitle != dropDownMessage)
{
chartId = int.Parse(chartDropDownList.SelectedItem.Value);
//Chart user control should be retrieved from the database and drawn.
chartTitleLabel.Text += "chart id : " + chartId.ToString() + " title: " + chartTitle;
//chartUserControl.Visible = true;
}
}
ユーザー コントロール、つまり dsuc[] のクラスは、ドロップダウン リストの項目が選択されると、chartId を変更します。値を出力しました。動作します。しかし、ボタンがクリックされると、同じ値が 0 になります。