[英]dropdownlist disable in asp.net
当管理员再次批准/拒绝任何文档,然后再次登录时,他/她将无法再次批准/拒绝文档,下拉列表仅针对那些可以一次批准/拒绝的文档禁用,然后当管理员查看任何新文档时将启用下拉菜单,当管理员批准/拒绝此文档时,将禁用下拉列表,因为不再批准/拒绝
为此,我这样做
protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
//Find the DropDownList in the Row
DropDownList abc = (e.Row.FindControl("DropDownList9") as DropDownList);
abc.Enabled = false;
}
}
但是这段代码告诉我所有dropdownlist都被禁用。
任何解决方案,我将如何做到这一点?
您需要从每一行访问数据项,我假设它在绑定到网格的对象上可用,并确定它们是否已被批准/拒绝。 如果是这样,那么您应该运行逻辑来禁用:
protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
var yo = (YOUR-OBJECT)e.Row.DataItem;
if(yo.Status !== null OR yo.Status != 'Not Reviewed'){
//Find the DropDownList in the Row
DropDownList abc = (e.Row.FindControl("DropDownList9")
as DropDownList);
abc.Enabled = false;
}
}
}
根据您的评论,我假设您的数据源是DataTable或DataSet。
如果是这样,则想将DataItem强制转换为RowDataBound事件内的DataRowView,以获取状态列的值。
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound">
<Columns>
<asp:BoundField DataField="Name" HeaderText="Name" />
<asp:TemplateField HeaderText="Status">
<ItemTemplate>
<asp:DropDownList runat="server" ID="DropDownList9">
<asp:ListItem Text="Approve" Value="1" />
<asp:ListItem Text="Reject" Value="2" />
<asp:ListItem Text="Pending" selected="selected" Value="3">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
var table = new DataTable();
table.Columns.Add("Id", typeof (int));
table.Columns.Add("Name", typeof (string));
table.Columns.Add("ApproveID", typeof(string));
table.Rows.Add(1, "Jon Doe", "1");
table.Rows.Add(2, "Eric Newton", "2");
table.Rows.Add(3, "Marry Doe", "3");
GridView1.DataSource = table;
GridView1.DataBind();
}
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
var item = e.Row.DataItem as DataRowView;
var dropDownList = e.Row.FindControl("DropDownList9") as DropDownList;
// Get value from ApproveID column,
// and check whehter Approve, Reject or others.
switch (item["ApproveID"].ToString())
{
case "1":
case "2":
dropDownList.Enabled = false;
break;
default:
dropDownList.Enabled = true;
break;
}
}
}
您可以使用以下代码询问您位于哪一行:
if (e.Row.RowIndex == <aRowNumber>)
{
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.