【发布时间】:2014-05-14 07:49:58
【问题描述】:
我有这个 aspx 源代码
<tr>
<td>MatchName</td>
<td>
<asp:DropDownList ID="ddlMatchName" runat="server">
</asp:DropDownList>
</td>
</tr>
<tr>
<td>Winning Team</td>
<td>
<asp:DropDownList ID="ddlWinningTeam" runat="server">
</asp:DropDownList>
</td>
</tr>
<tr>
<td>Score</td>
<td>
<asp:TextBox ID="txtScore" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Button ID="btnSave" runat="server" Text="Save" OnClick="btnSave_Click" />
</td>
<td>
<asp:Button ID="btnCancel" runat="server" Text="Cancel" OnClick="btnCancel_Click" />
</td>
</tr>
C#代码
protected void Page_Load(object sender, EventArgs e)
{
string queryMatchDetail = "select MatchId,MatchName from ADMMasterMatch order by MatchDate";
ddlMatchName.DataSource = clsNewSqlFunctions.GetSelectedData(queryMatchDetail);
ddlMatchName.DataTextField = "MatchName";
ddlMatchName.DataValueField = "MatchId";
ddlMatchName.DataBind();
string queryTeamDetail = "SELECT [TeamId],[TeamName] FROM [AdmCurrentEventMasterTeam] order by TeamName";
ddlWinningTeam.DataSource = clsNewSqlFunctions.GetSelectedData(queryTeamDetail);
ddlWinningTeam.DataTextField = "TeamName";
//ddlWinningTeam.DataValueField = "TeamId";
ddlWinningTeam.DataBind();
}
protected void btnSave_Click(object sender, EventArgs e)
{
var s = ddlMatchName.SelectedIndex;
string query = "UPDATE [ADMMasterMatch] SET Winner = '" + ddlWinningTeam.SelectedItem.Text + "' , Score = '" + txtScore.Text + "' Where MatchId ='" + ddlMatchName.SelectedItem.Text +"'";
clsNewSqlFunctions.ExecuteQuery(query);
}
protected void btnCancel_Click(object sender, EventArgs e)
{
Response.Redirect("ADMCurrentEventMatchResult.aspx");
}
这里clsNewSqlFunctions.ExecuteQuery() 和 clsNewSqlFunctions.GetSelectedData() 是执行查询和选择以数据集形式返回数据的数据的方法
在Save_Click 事件中,我正在从下拉列表的选定值更新数据库中的数据,但它没有显示我选定的值
它总是在索引 0 处显示值。在 SelectedText,SelectedItem
请帮我看看我的代码有什么问题
【问题讨论】:
-
这是因为您在回发时重新绑定了列表 - 查找页面生命周期和
IsPostBack属性。 -
一个愚蠢的错误 :p:p 感谢@DaveParsons
-
您的
btnSave_Click查询已经成熟,可以进行 sql 注入攻击了。 -
@DaveParsons 这是什么意思,我该如何纠正它