我尝试传递用户选择的某些值,但我无法在gridview中设置CheckBoxField。
有人可以告诉我怎么做吗?
到目前为止,这是我的代码......
<asp:GridView ID="GridView1" SkinID="CompacGrid" runat="server" AutoGenerateColumns="False"
DataSourceID="ObjectDataSource1" Width="400px" AllowPaging="True" BackColor="White"
BorderColor="#999999" BorderStyle="None" BorderWidth="1px" CellPadding="3"
GridLines="Vertical">
<RowStyle BackColor="#EEEEEE" ForeColor="Black" />
<Columns>
<asp:CheckBoxField headertext="mm" />
谢谢,
史蒂夫
答案 0 :(得分:4)
出于某种原因,Microsoft在其ASP.NET中的CheckBox规范中省略了“Value”属性,尽管它是completely valid feature of HTML。我的猜测是他们希望它尽可能与WinForms CheckBox类似(它也缺少'Value'属性)。
如果您想要提供<asp:CheckBox />
或<asp:CheckBoxField />
'价值'属性,您必须自行扩展控件并定义自定义'Value'属性,或使用代码 - 后面填充控件的Attributes或InputAttributes集合。 See this article for more details
cbMyCheckBoxField.Attributes.Add("Value", "foo");
或
cbMyCheckBoxField.InputAttributes.Add("Value", "foo");
这两种方法的主要区别在于前者不在生成的HTML(仅ViewState)中包含Value,而后者将包含。
答案 1 :(得分:0)
尝试根据数据源对象上的布尔条件设置DataField
属性。它似乎是绑定到ObjectDataSource。也许在课堂上有一个布尔条件 - 比如IsHired
。
也许是这样的:
<asp:CheckBoxField headertext="mm" DataField="IsHired" />
MSDN CheckBoxField article上有一个示例。
答案 2 :(得分:0)
要添加到Nathan的答案:我会为您的GridView使用RowDataBound事件。假设您绑定到DataTable,有趣的列为[0]。
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
//Check for a data row
if (e.Row.RowType == DataControlRowType.DataRow)
{
//Find the checkbox control by ID and set it.
((CheckBox)e.Row.FindControl("CheckBoxId")).Checked = IsItemChecked(((DataRowView)e.Row.DataItem)[0]);
}
}
IsItemChecked函数可以从DataItem传递数据,以创建传回布尔值的自定义逻辑。拥有控件后,您还可以向其添加属性。掌握它之后,这是一种强大的技术。