选择后如何保存在下拉列表中选择的选项
How to save option selected in Dropdownlist after selection
我在 GridView 中显示列,其中一列是下拉列表。我希望能够在选择某些内容后立即保存在下拉列表中选择的选项。我已经使用其中一个具有文本框的列完成了此操作,因此我希望对 DropDownList 执行类似的操作。
文本框和下拉列表的代码:
protected void gvPieceDetails_ItemDataBound(object sender, GridViewRowEventArgs e) {
if (e.Row.RowType == DataControlRowType.DataRow) {
JobPieceSerialNo SerNo = e.Row.DataItem as JobPieceSerialNo;
if (SerNo != null) {
TextBox txtComment = e.Row.FindControl("txtComment") as TextBox;
txtComment.Text = SerNo.Comment;
txtComment.Attributes.Add("onblur", "UpdateSerialComment(" + SerNo.ID.ToString() + ", this.value);");
DropDownList ddlReasons = (e.Row.FindControl("ddlReasons") as DropDownList);
DataSet dsReasons = DataUtils.GetUnapprovedReasons(Company.Current.CompanyID, "", true, "DBRIEF");
ddlReasons.DataSource = dsReasons;
ddlReasons.DataTextField = "Description";
ddlReasons.DataValueField = "Description";
ddlReasons.DataBind();
ddlReasons.Items.Insert(0, new ListItem("Reason"));
}
}
如何为下拉列表创建更新函数?
protected void DDLReasons_SelectedIndexChanged(object sender, EventArgs e)
{
string sel = ddlReasons.SelectedValue.ToString();
}
public static void UpdateSerialReason(int SerNoID, string Reasons)
{
JobPieceSerialNo SerNo = new JobPieceSerialNo(SerNoID);
SerNo.Reason = sel; //can't find sel value
SerNo.Update();
}
下拉列表:
<asp:DropDownList ID="ddlReasons" runat="server" OnSelectedIndexChanged="DDLReasons_SelectedIndexChanged" AutoPostBack="true"></asp:DropDownList>
我创建了一个 OnSelectedIndexChanged 函数来获取选定的值。但是我该如何保存那个值呢?有没有办法将它传递给 UpdateSerialReason 函数?
只需将 string sel
声明移出 DDLReasons_SelectedIndexChanged
的范围并获取 SelectedItem 的文本,因为它包含在您的数据源中。
private string sel;
protected void DDLReasons_SelectedIndexChanged(object sender, EventArgs e)
{
sel = ddlReasons.SelectedItem.Text;
}
public static void UpdateSerialReason(int SerNoID, string Reasons)
{
JobPieceSerialNo SerNo = new JobPieceSerialNo(SerNoID);
SerNo.Reason = sel; // Should now be available
SerNo.Update();
}
您之前使用它的方式仅在本地范围内可用,即在声明和使用它的方法内。
您可以在调用函数时获取选定的值:
UpdateSerialReason(/*Some SerNoID*/ 123456, ddlReasons.SelectedValue)
如果按照 Equalsk 的建议将值保存到变量,回发完成后您将丢失您的值。如果您需要在其他页面上使用您的值,您可以将其保存在会话中。
如果您在一个 asp.net 页面内工作,您可以按照我上面的建议进行操作。然后您可以跳过 DropDownList 上的回发并在需要时调用 UpdateSerialReason :)
你可能想添加 属性 ViewStateMode="Enabled"
和 EnableViewState="true"
我在 GridView 中显示列,其中一列是下拉列表。我希望能够在选择某些内容后立即保存在下拉列表中选择的选项。我已经使用其中一个具有文本框的列完成了此操作,因此我希望对 DropDownList 执行类似的操作。 文本框和下拉列表的代码:
protected void gvPieceDetails_ItemDataBound(object sender, GridViewRowEventArgs e) {
if (e.Row.RowType == DataControlRowType.DataRow) {
JobPieceSerialNo SerNo = e.Row.DataItem as JobPieceSerialNo;
if (SerNo != null) {
TextBox txtComment = e.Row.FindControl("txtComment") as TextBox;
txtComment.Text = SerNo.Comment;
txtComment.Attributes.Add("onblur", "UpdateSerialComment(" + SerNo.ID.ToString() + ", this.value);");
DropDownList ddlReasons = (e.Row.FindControl("ddlReasons") as DropDownList);
DataSet dsReasons = DataUtils.GetUnapprovedReasons(Company.Current.CompanyID, "", true, "DBRIEF");
ddlReasons.DataSource = dsReasons;
ddlReasons.DataTextField = "Description";
ddlReasons.DataValueField = "Description";
ddlReasons.DataBind();
ddlReasons.Items.Insert(0, new ListItem("Reason"));
}
}
如何为下拉列表创建更新函数?
protected void DDLReasons_SelectedIndexChanged(object sender, EventArgs e)
{
string sel = ddlReasons.SelectedValue.ToString();
}
public static void UpdateSerialReason(int SerNoID, string Reasons)
{
JobPieceSerialNo SerNo = new JobPieceSerialNo(SerNoID);
SerNo.Reason = sel; //can't find sel value
SerNo.Update();
}
下拉列表:
<asp:DropDownList ID="ddlReasons" runat="server" OnSelectedIndexChanged="DDLReasons_SelectedIndexChanged" AutoPostBack="true"></asp:DropDownList>
我创建了一个 OnSelectedIndexChanged 函数来获取选定的值。但是我该如何保存那个值呢?有没有办法将它传递给 UpdateSerialReason 函数?
只需将 string sel
声明移出 DDLReasons_SelectedIndexChanged
的范围并获取 SelectedItem 的文本,因为它包含在您的数据源中。
private string sel;
protected void DDLReasons_SelectedIndexChanged(object sender, EventArgs e)
{
sel = ddlReasons.SelectedItem.Text;
}
public static void UpdateSerialReason(int SerNoID, string Reasons)
{
JobPieceSerialNo SerNo = new JobPieceSerialNo(SerNoID);
SerNo.Reason = sel; // Should now be available
SerNo.Update();
}
您之前使用它的方式仅在本地范围内可用,即在声明和使用它的方法内。
您可以在调用函数时获取选定的值:
UpdateSerialReason(/*Some SerNoID*/ 123456, ddlReasons.SelectedValue)
如果按照 Equalsk 的建议将值保存到变量,回发完成后您将丢失您的值。如果您需要在其他页面上使用您的值,您可以将其保存在会话中。
如果您在一个 asp.net 页面内工作,您可以按照我上面的建议进行操作。然后您可以跳过 DropDownList 上的回发并在需要时调用 UpdateSerialReason :)
你可能想添加 属性 ViewStateMode="Enabled"
和 EnableViewState="true"