绑定DropDownList代码
protected void Repeater1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DropDownList dop = (DropDownList)e.Row.FindControl("state");
dop.Items.Insert(0, new ListItem("未测试", Repeater1.DataKeys[e.Row.RowIndex].Value.ToString()));
dop.SelectedIndex =Convert.ToInt32(ds13.Tables[0].Rows[e.Row.RowIndex]["vstate"].ToString());
}
}
DropDownList 事件
public void state_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList dp = (DropDownList)sender;
string i = Convert.ToString(dp.SelectedItem.Text);
}
aspx代码
function ifmakesure()
{
if(confirm("你确定修改状态吗?"))
{
setTimeout('__doPostBack(/'Repeater1$ctl18$state/',/'/')', 0);
return true;
}
else
{
return false;
}
}
<asp:TemplateField HeaderText="状态">
<ItemTemplate>
<asp:DropDownList runat="server" οnchange="return ifmakesure();" AutoPostBack="true" ID="state" OnSelectedIndexChanged="state_SelectedIndexChanged" >
<asp:ListItem>通过</asp:ListItem>
<asp:ListItem>未通过</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
<ItemStyle Width="5%" />
</asp:TemplateField>
看起来很简单 但是值得注意的是 如果没有aspx代码里的两个原始值的话 SelectedIndexChanged 是不会执行的
因此,必须给他两个原始的值 然后在cs代码里给他插入一个值
这个问题是做修改测试项任务时发现的 ,当时要求我们点击DropDownList 直接进行事件变化