1

我对 Telerik radgrid 有疑问:

  • 我有一个 17 列的 radgrid,只有 6 个是可编辑的(其他有 ReadOnly="true")

  • 一个按钮触发尝试将更改保存到 DB 的方法(不是 radgrid 事件,所以我没有网格参数)

  • 我可以从 radgrid.edititems(6 列)中获取值,但我不知道在哪里可以找到其他 11 个不可编辑的列...

这是我的代码

protected void HiddenButton_Click(object sender, EventArgs e)
{
    try
    {
        DataTable dt = Oggetti.DT_RDO();

        foreach (GridEditableItem editedItem in dgRDO.EditItems)
        {
            Hashtable newValues = new Hashtable();
            //The GridTableView will fill the values from all editable columns in the hash
            editedItem.OwnerTableView.ExtractValuesFromItem(newValues, editedItem);

进入 newValues 我已经编辑了值,我可以在哪里获得其他值???

4

2 回答 2

3

请尝试使用以下代码片段。

.ASPX

<Columns>
    <telerik:GridBoundColumn DataField="ID" UniqueName="ID" HeaderText="ID">
    </telerik:GridBoundColumn>
    <telerik:GridBoundColumn DataField="Name" UniqueName="Name" HeaderText="Name">
    </telerik:GridBoundColumn>
    <telerik:GridEditCommandColumn>
    </telerik:GridEditCommandColumn>
</Columns>

.ASPX.CS

protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
{
    if (e.Item is GridEditableItem && e.Item.IsInEditMode)
    {
        if (e.Item is GridEditFormInsertItem)
        {
            // insert
        }
        else
        {
            // Edit
            // Please add below code in your page
            GridEditableItem item = e.Item as GridEditableItem;
            item["Name"].Controls[0].Visible = false;
            Label l1 = new Label();
            l1.ID = "l1";
            l1.Text = (item["Name"].Controls[0] as TextBox).Text;
            item["Name"].Controls.Add(l1);
        }
    }
}

注意:我们无法在 ExtractValuesFromItem 方法中获取只读列的值。如果我们将任何列设置为只读,那么它将不会在编辑模式下呈现。这就是我们无法访问此列的原因。

添加上述代码后,您可以在 ExtractValuesFromItem 方法中查看/获取两个列的值。

请查看以下链接以获取更多信息。

http://www.telerik.com/community/forums/aspnet-ajax/grid/reading-read-only-column-in-ragdrid-update.aspx

于 2013-04-17T06:01:32.807 回答
1

我通过从 GridBoundColumn 中删除 ReadOnly 属性解决了这个问题,而是禁用了数据网格的 ItemDataBound 事件中的可编辑文本框。

ASPX

<telerik:GridBoundColumn DataField="BillingRate" HeaderText="Rate" />

ASPX.VB

Protected Sub grdWorkServices_ItemDataBound(sender As Object, e As GridItemEventArgs) Handles grdWorkServices.ItemDataBound
        If TypeOf e.Item Is GridDataItem AndAlso e.Item.IsInEditMode Then
            Dim l_oGridDataItem As GridDataItem = DirectCast(e.Item, GridDataItem)

            Dim l_oTextBox As TextBox = DirectCast(l_oGridDataItem("BillingRate").Controls(0), TextBox)
            l_oTextBox.Enabled = False
        End If
End Sub
于 2014-04-27T20:13:09.410 回答