我在datagrid里放入两个dropdownlist:ddlfOperateStatus和ddlfProblemType,想把数据库里的数据绑定到dropdownlist上,要求操作状态为"操作成功"的话,问题类型的下拉框不要出现,为"操作不成功"的话,问题类型的下拉框出现,且为数据库里的问题类型,为此我用了两列操作状态和问题类型的隐藏列,想在ItemDataBound事件里通过隐藏列绑定.但是结果隐藏列数据正常,dropdownlist里的数据却不对,显示为:
材料人员标 姓名 证件号码 操作状态 操作状态 问题类型 问题类型 备注
识隐藏列 隐藏列 隐藏列
M3 扬文风风 320825197110280953 操作成功 操作成功
M6 朱阿毛 320922198211013310 操作成功 操作不成功 问题1
好象没绑定上去,第二条记录的操作状态dropdownlist应该显示"操作不成功"的,问题类型的dropdownlist也应该显示的.请问各位大侠是怎么回事?多谢了!急,在线等....(要是我没描述清楚的话,请大家提出来)
相关代码为:
<asp:datagrid id="DataGrid2" runat="server" CssClass="result" Width="788px" BorderWidth="0px" CellSpacing="1" CellPadding="0" AutoGenerateColumns="False" AllowPaging="True" PageSize="20">
<SelectedItemStyle CssClass="result_select"></SelectedItemStyle>
<AlternatingItemStyle CssClass="result_content_"></AlternatingItemStyle>
<ItemStyle CssClass="result_content"></ItemStyle>
<HeaderStyle CssClass="result_head"></HeaderStyle>
<Columns>
<asp:TemplateColumn>
<HeaderTemplate>
材料人员标识隐藏列
</HeaderTemplate>
<ItemTemplate>
<asp:Label id="lblfId" runat="server" Text='<%# DataBinder.Eval (Container.DataItem,"fId").ToString() %>' >
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
姓名
</HeaderTemplate>
<ItemTemplate>
<asp:Label id="lblfName" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"fName").ToString() %>' >
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
证件号码
</HeaderTemplate>
<ItemTemplate>
<asp:Label id="lblfIDCard" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"fIDCard").ToString() %>' >
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
操作状态
</HeaderTemplate>
<ItemTemplate>
<asp:DropDownList ID="ddlfOperateStatus" Runat="server" OnSelectedIndexChanged="ddlfOperateStatus_SelectedIndexChanged" AutoPostBack=True >
<asp:ListItem Value="OS01">操作成功</asp:ListItem>
<asp:ListItem Value="OS02">操作不成功</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
操作状态隐藏列
</HeaderTemplate>
<ItemTemplate>
<asp:Label id="lblfOperateStatus" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"fOperateStatus").ToString() %>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
问题类型
</HeaderTemplate>
<ItemTemplate>
<asp:DropDownList ID="ddlfProblemType" Runat="server" AutoPostBack=True >
<asp:ListItem Value="OPT01">已在该单位参保</asp:ListItem>
<asp:ListItem Value="OPT02">已在其他单位参保</asp:ListItem>
<asp:ListItem Value="OPT03">无此人(退工)</asp:ListItem>
<asp:ListItem Value="OPT04">非参保范围</asp:ListItem>
<asp:ListItem Value="OPT05">其他原因</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
问题类型隐藏列
</HeaderTemplate>
<ItemTemplate>
<asp:Label id="lblfProblemType" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"fProblemType").ToString() %>' >
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
备注
</HeaderTemplate>
<ItemTemplate>
<asp:TextBox id="txtfRe" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"fRe").ToString() %>' >
</asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
<PagerStyle Visible="False" NextPageText="5" PrevPageText="6" HorizontalAlign="Right" ForeColor="Black" Mode="NumericPages"></PagerStyle>
</asp:datagrid>后台相关代码为:
private void DataGrid2_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if ((e.Item.ItemType == ListItemType.Item)||(e.Item.ItemType == ListItemType.AlternatingItem))
{
string strfOperateStatus = e.Item.Cells[4].Text.ToString(); // 用隐藏列取出数据
// this.lblMessage.Text = "lalala";
DropDownList ddlfOperateStatus1 = (DropDownList)e.Item.Cells[3].FindControl("ddlfOperateStatus");
for(int i=0;i<ddlfOperateStatus1.Items.Count;i++)
{
if(strfOperateStatus.Equals(ddlfOperateStatus1.Items[i].Text.ToString()))
{
ddlfOperateStatus1.Items[i].Selected = true;
break; }
}
string strfProblemType = e.Item.Cells[6].Text.ToString(); // 用隐藏列取出数据
DropDownList ddlfProblemType1 = (DropDownList)e.Item.Cells[5].FindControl("ddlfProblemType");
if(strfProblemType == "")
ddlfProblemType1.Visible = false;
else
{
ddlfProblemType1.Visible = true;
for(int i=0;i<ddlfProblemType1.Items.Count;i++)
{
if(strfProblemType.Equals(ddlfProblemType1.Items[i].Text.ToString()))
{
ddlfProblemType1.Items[i].Selected = true;
break; }
}
}
}
}
public void ddlfOperateStatus_SelectedIndexChanged(object sender, System.EventArgs e)
{
DropDownList ddlfOperateStatus1 = (DropDownList)sender;
TableCell cell = (TableCell)ddlfOperateStatus1.Parent;
DataGridItem item = (DataGridItem)cell.Parent; if(((DropDownList)sender).SelectedItem.Text.ToString() == "操作成功")
((DropDownList)item.Cells[5].FindControl("ddlfProblemType")).Visible = false; if(((DropDownList)sender).SelectedItem.Text.ToString() == "操作不成功")
{
((DropDownList)item.Cells[5].FindControl("ddlfProblemType")).Visible = true;
}
}
材料人员标 姓名 证件号码 操作状态 操作状态 问题类型 问题类型 备注
识隐藏列 隐藏列 隐藏列
M3 扬文风风 320825197110280953 操作成功 操作成功
M6 朱阿毛 320922198211013310 操作成功 操作不成功 问题1
好象没绑定上去,第二条记录的操作状态dropdownlist应该显示"操作不成功"的,问题类型的dropdownlist也应该显示的.请问各位大侠是怎么回事?多谢了!急,在线等....(要是我没描述清楚的话,请大家提出来)
相关代码为:
<asp:datagrid id="DataGrid2" runat="server" CssClass="result" Width="788px" BorderWidth="0px" CellSpacing="1" CellPadding="0" AutoGenerateColumns="False" AllowPaging="True" PageSize="20">
<SelectedItemStyle CssClass="result_select"></SelectedItemStyle>
<AlternatingItemStyle CssClass="result_content_"></AlternatingItemStyle>
<ItemStyle CssClass="result_content"></ItemStyle>
<HeaderStyle CssClass="result_head"></HeaderStyle>
<Columns>
<asp:TemplateColumn>
<HeaderTemplate>
材料人员标识隐藏列
</HeaderTemplate>
<ItemTemplate>
<asp:Label id="lblfId" runat="server" Text='<%# DataBinder.Eval (Container.DataItem,"fId").ToString() %>' >
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
姓名
</HeaderTemplate>
<ItemTemplate>
<asp:Label id="lblfName" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"fName").ToString() %>' >
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
证件号码
</HeaderTemplate>
<ItemTemplate>
<asp:Label id="lblfIDCard" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"fIDCard").ToString() %>' >
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
操作状态
</HeaderTemplate>
<ItemTemplate>
<asp:DropDownList ID="ddlfOperateStatus" Runat="server" OnSelectedIndexChanged="ddlfOperateStatus_SelectedIndexChanged" AutoPostBack=True >
<asp:ListItem Value="OS01">操作成功</asp:ListItem>
<asp:ListItem Value="OS02">操作不成功</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
操作状态隐藏列
</HeaderTemplate>
<ItemTemplate>
<asp:Label id="lblfOperateStatus" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"fOperateStatus").ToString() %>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
问题类型
</HeaderTemplate>
<ItemTemplate>
<asp:DropDownList ID="ddlfProblemType" Runat="server" AutoPostBack=True >
<asp:ListItem Value="OPT01">已在该单位参保</asp:ListItem>
<asp:ListItem Value="OPT02">已在其他单位参保</asp:ListItem>
<asp:ListItem Value="OPT03">无此人(退工)</asp:ListItem>
<asp:ListItem Value="OPT04">非参保范围</asp:ListItem>
<asp:ListItem Value="OPT05">其他原因</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
问题类型隐藏列
</HeaderTemplate>
<ItemTemplate>
<asp:Label id="lblfProblemType" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"fProblemType").ToString() %>' >
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
备注
</HeaderTemplate>
<ItemTemplate>
<asp:TextBox id="txtfRe" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"fRe").ToString() %>' >
</asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
<PagerStyle Visible="False" NextPageText="5" PrevPageText="6" HorizontalAlign="Right" ForeColor="Black" Mode="NumericPages"></PagerStyle>
</asp:datagrid>后台相关代码为:
private void DataGrid2_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if ((e.Item.ItemType == ListItemType.Item)||(e.Item.ItemType == ListItemType.AlternatingItem))
{
string strfOperateStatus = e.Item.Cells[4].Text.ToString(); // 用隐藏列取出数据
// this.lblMessage.Text = "lalala";
DropDownList ddlfOperateStatus1 = (DropDownList)e.Item.Cells[3].FindControl("ddlfOperateStatus");
for(int i=0;i<ddlfOperateStatus1.Items.Count;i++)
{
if(strfOperateStatus.Equals(ddlfOperateStatus1.Items[i].Text.ToString()))
{
ddlfOperateStatus1.Items[i].Selected = true;
break; }
}
string strfProblemType = e.Item.Cells[6].Text.ToString(); // 用隐藏列取出数据
DropDownList ddlfProblemType1 = (DropDownList)e.Item.Cells[5].FindControl("ddlfProblemType");
if(strfProblemType == "")
ddlfProblemType1.Visible = false;
else
{
ddlfProblemType1.Visible = true;
for(int i=0;i<ddlfProblemType1.Items.Count;i++)
{
if(strfProblemType.Equals(ddlfProblemType1.Items[i].Text.ToString()))
{
ddlfProblemType1.Items[i].Selected = true;
break; }
}
}
}
}
public void ddlfOperateStatus_SelectedIndexChanged(object sender, System.EventArgs e)
{
DropDownList ddlfOperateStatus1 = (DropDownList)sender;
TableCell cell = (TableCell)ddlfOperateStatus1.Parent;
DataGridItem item = (DataGridItem)cell.Parent; if(((DropDownList)sender).SelectedItem.Text.ToString() == "操作成功")
((DropDownList)item.Cells[5].FindControl("ddlfProblemType")).Visible = false; if(((DropDownList)sender).SelectedItem.Text.ToString() == "操作不成功")
{
((DropDownList)item.Cells[5].FindControl("ddlfProblemType")).Visible = true;
}
}
材料人员标 姓名 证件号码 操作状态 操作状态 问题类型 问题类型 备注
识隐藏列 隐藏列 隐藏列
M3 扬文风风 320825197110280953 操作成功 操作成功
M6 朱阿毛 320922198211013310 操作成功 操作不成功 问题1
第二条记录的操作状态dropdownlist应该显示"操作不成功"的,问题类型的dropdownlist也应该显示出来的.请问各位大侠是怎么回事?多谢了!