请记住,为此,我仅限于使用ASP .NET 1.1,因为这个环境我无法升级到2.0或更高版本
基本上,我有一个非常简单的数据网格,其中一个列中有一个复选框,这是一个模板列...数据网格的代码是这样的:
<asp:datagrid id="dgDates" OnItemCommand="gridEventHandler" BorderColor="Black" BorderWidth="1px"
CellPadding="3" runat="server" AutoGenerateColumns="False" HorizontalAlign="Left" AllowSorting="True"
OnSortCommand="SortData" OnItemDataBound="gridItemDataBound">
<HeaderStyle Font-Underline="True" Font-Bold="True" HorizontalAlign="Center" ForeColor="Black"
BackColor="#D4D0C8"></HeaderStyle>
<Columns>
<asp:BoundColumn DataField="strParameterName" SortExpression="strParameterName" HeaderText="Parameter Name"></asp:BoundColumn>
<asp:BoundColumn DataField="dtParameterValue" SortExpression="dtParameterValue" HeaderText="Parameter Value"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="Status" SortExpression="blnStatic">
<ItemTemplate>
<asp:CheckBox ID="cbStaticRolling" OnCheckedChanged="staticRolling_CheckedChanged" Runat="server" AutoPostBack="true"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>
现在,我想根据特定行的复选框是否设置为true来评估存储过程,因此我将其作为datagrid的事件处理程序:
Protected Sub gridItemDataBound(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs)
If IsPostBack Then
Dim intRptSchedulingDatesID As Integer
If (e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem) Then
cbStaticRolling = CType(e.Item.FindControl("cbStaticRolling"), CheckBox)
intRptSchedulingDatesID = CType(e.Item.DataItem, System.Data.DataRowView).Item("intRptSchedulingDatesID")
If cbStaticRolling.Checked Then
SqlHelper.ExecuteNonQuery(ConfigurationSettings.AppSettings(Web.Global.CfgKeyConnStringADMIN), "dbo.spRptSchedulingDate_update", intRptSchedulingDatesID, True)
ElseIf Not cbStaticRolling.Checked Then
SqlHelper.ExecuteNonQuery(ConfigurationSettings.AppSettings(Web.Global.CfgKeyConnStringADMIN), "dbo.spRptSchedulingDate_update", intRptSchedulingDatesID, False)
End If
End If
End If
End Sub
现在,我的问题是当我通过e参数上的FindControl将cbStaticRolling设置为CheckBox控件时,它似乎设置变量okay,但似乎没有设置正确的,或正确设置它,因为无论我是否勾选方框,“已检查”属性都是假的
答案 0 :(得分:0)
您没有设置复选框的值,当它绑定到结果集时,您需要在模板列中输入以下内容:
<ItemTemplate>
<asp:Label id="Label3" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.FirstName") %>' >
</asp:Label>
</ItemTemplate>
由于您设置了一个复选框,因此可能必须使用值标记而不是文本,并从存储过程中返回true或false。