0

我需要一个 GridCheckBoxColumn 包含我的表 SQL 中针对该行 (id) 的字符串值。OBS:我使用 ASP.NET 框架 4、Telerik、C# 和 SQL Server。

场景:

  1. 在表 SQL 中,我有多行(列 sub_folder_path(varchar)、groupM(varchar)、groupR(varchar) 是最重要的!)。
  2. 在我的 webapp (asp.net) 中,调用此表并使用来自 SQL 的信息(相同的列名)创建一个 RadGrid(Telerik)。
  3. 我需要在 webapp (asp.net) 2 GridCheckBox (GroupR 和 GroupM) 中创建一个列,对于每一行,我只能选择 GroupR 或 GroupM。
  4. 当我为 GridCheckBox(GroupR 和 GroupM)选择一个选项时,我需要为每一行移动到 .CS Group name selected (varchar)。

我的代码 asp.net

<telerik:GridCheckBoxColumn DataField="securityGroupR" HeaderText="Access to Modify"
                                SortExpression="securityGroupR" UniqueName="securityGroupR" DataType="System.String">
                            </telerik:GridCheckBoxColumn>
                            <telerik:GridCheckBoxColumn DataField="securityGroupM" HeaderText="Access to Modify"
                                SortExpression="securityGroupM" UniqueName="securityGroupM" DataType="System.String">
                            </telerik:GridCheckBoxColumn>

错误:字符串未被识别为有效的布尔值。

如何为每个选定的行创建传递我的 .CS 组名称的 GridCheckBox?

谢!

4

1 回答 1

1

请尝试以下代码片段。

.ASPX

<telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="false" OnNeedDataSource="RadGrid1_NeedDataSource"
    OnItemDataBound="RadGrid1_ItemDataBound">
    <MasterTableView>
        <Columns>
            <telerik:GridBoundColumn DataField="ID" UniqueName="ID" HeaderText="ID">
            </telerik:GridBoundColumn>
            <telerik:GridTemplateColumn>
                <ItemTemplate>
                    <asp:CheckBox ID="CheckBox1" runat="server" />
                </ItemTemplate>
            </telerik:GridTemplateColumn>
        </Columns>
    </MasterTableView>
</telerik:RadGrid>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Get selected Checbox" />

.ASPX.CS

protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
    DataTable dt = new DataTable();
    dt.Columns.Add("ID", typeof(int));
    dt.Columns.Add("flag", typeof(string));

    dt.Rows.Add(1, "true");
    dt.Rows.Add(2, "true");
    dt.Rows.Add(3, "false");

    RadGrid1.DataSource = dt;

}

protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
{
    if (e.Item is GridDataItem)
    {
        GridDataItem item = e.Item as GridDataItem;

        DataRowView dr = item.DataItem as DataRowView; // Convert DataItem into Your Assigned Object

        (item.FindControl("CheckBox1") as CheckBox).Checked = GetBoolValueFromString(Convert.ToString(dr["flag"]));

    }
}


protected bool GetBoolValueFromString(string strFlag)
{
    bool flag = false;
    bool.TryParse(strFlag, out flag);
    return flag;
}

protected void Button1_Click(object sender, EventArgs e)
{
    foreach (GridDataItem item in RadGrid1.MasterTableView.Items)
    {
        if ((item.FindControl("CheckBox1") as CheckBox).Checked)
        {
            string strID = item["ID"].Text; // Get selected Checkbox's ID Field Value
        }
    }
}
于 2013-06-21T13:07:50.083 回答