我有GridView
,显示数字1或0的记录。
如何将记录转换为复选框,如果值为1则检查该复选框;如果值为0,则将其取消选中?
<asp:GridView ID="gvStations" runat="server">
<columns>
<asp:templatefield headertext="Type" sortexpression="TypeDesc">
<edititemtemplate>
<asp:CheckBox ID="cbTypeEdit" runat="server" Text='<%# Bind("TypeDesc") />
</edititemtemplate>
<itemtemplate>
<asp:CheckBox ID="cbType" runat="server" Text='<%# Bind("TypeDesc") ></asp:CheckBox>
</itemtemplate>
<itemstyle horizontalalign="Center" />
</asp:templatefield>
<asp:templatefield headertext="Type 2" sortexpression="TypeDesc2">
<edititemtemplate>
<asp:CheckBox ID="cbType2Edit" runat="server" Text='<%# Bind("TypeDesc2") />
</edititemtemplate>
<itemtemplate>
<asp:CheckBox ID="cbType2" runat="server" Text='<%# Bind("TypeDesc2") ></asp:CheckBox>
</itemtemplate>
<itemstyle horizontalalign="Center" />
</asp:templatefield>
</columns>
</asp:GridView>
现在我可以将它们改为X,如果它是1和#34;空白&#34;如果是0。
protected void gvStations_RowDataBound(object sender, GridViewRowEventArgs e)
{
for (int i = 0; i <= this.gvStations.Rows.Count - 1; i++)//from here down changes the 1's to X's and O's to blanks.
{
for (int j = 0; j <= this.gvStations.Columns.Count - 1; j++)
{
if (j != 1 && j != 2)
{
if (this.gvStations.Rows[i].Cells[j].Text == "1")
{
this.gvStations.Rows[i].Cells[j].Text = "X";
}
else if (this.gvStations.Rows[i].Cells[j].Text == "0")
{
this.gvStations.Rows[i].Cells[j].Text = " ";
}
}
}
}
}
答案 0 :(得分:3)
对于显示,您可以像绑定值的单个比较一样简单:
<asp:CheckBox ID="cbTypeEdit" runat="server"
Checked='<%# (int)Eval("TypeDesc") == 1 %>'/>
为了处理网格行的编辑,我担心您需要处理GridView的RowUpdated
事件并手动转换值。
答案 1 :(得分:1)
我认为应该是:
<asp:CheckBox ID="cbTypeEdit" runat="server" Text='<%# Bind("TypeDesc") %>' Checked="<%# (Int)Eval("TypeDesc") == 0 ? false : true %>" />
答案 2 :(得分:0)
一个简单的辅助函数会更好,因为你有TypeDesc
和TypeDesc2
。
标记
Checked='<%# SetCheckedStatus(Bind("TypeDesc")) %>'
Checked='<%# SetCheckedStatus(Bind("TypeDesc2")) %>'
代码隐藏
protected bool SetCheckedStatus(object typeDesc)
{
var isChecked = false;
var intValue = 0;
if (typeDesc != null)
{
int.TryParse(typeDesc.ToString(), out intValue);
if (intValue == 1) { isChecked = true; }
}
return isChecked;
}
这种方式更清晰的标记