当radgrid处于编辑模式时从readonly列获取值(inPlace)

时间:2013-04-16 15:08:30

标签: asp.net telerik telerik-grid radgrid

我遇到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我已经编辑了值,我可以获得其他值???

2 个答案:

答案 0 :(得分: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方法中获取readonly列的值。如果我们将任何列设置为只读,那么它将不会在editmode中呈现。这就是我们无法访问此列的原因。

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

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

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

答案 1 :(得分:1)

我已经通过从GridBoundColumn中删除了ReadOnly属性来解决了这个问题,而是禁用了datagrid的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