【问题标题】:Getting values from readonly columns when radgrid is in edit mode (inPlace)当 radgrid 处于编辑模式时从只读列获取值(就地)
【发布时间】:2013-04-16 15:08:29
【问题描述】:

我对 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 中我已经编辑了值,我可以在其中获取其他值???

【问题讨论】:

    标签: asp.net telerik telerik-grid radgrid


    【解决方案1】:

    请尝试以下代码 sn-p。

    .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

    【讨论】:

      【解决方案2】:

      我通过从 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-02-29
        • 1970-01-01
        • 2021-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-31
        • 1970-01-01
        相关资源
        最近更新 更多