【问题标题】:How to access template column controls at the time of "Add New Record" click in telerik如何在 Telerik 中单击“添加新记录”时访问模板列控件
【发布时间】:2012-03-29 08:46:07
【问题描述】:

我的 Telerik:RadGrid 标签:

<telerik:RadGrid ID="grdSettlement" runat="server" AllowFilteringByColumn="True"
    DataSourceID="SqlDataSource1" AllowAutomaticDeletes="True" AllowAutomaticUpdates="True"
    AllowAutomaticInserts="true" OnInsertCommand="grdSettlement_InsertCommand">

我的专栏:

<telerik:GridTemplateColumn DataField="NO" FilterControlAltText="Filter NO column"
                HeaderText="NO" SortExpression="NO" UniqueName="NO" DataType="System.Int64">
                <InsertItemTemplate>
                    <telerik:RadNumericTextBox runat="server" ID="No">
                    </telerik:RadNumericTextBox>
                </InsertItemTemplate>
                <ItemTemplate>
                    <%# Eval("NO") %>
                </ItemTemplate>
            </telerik:GridTemplateColumn>

C# 代码来访问它:

protected void grdSettlement_InsertCommand(object source, GridItemEventArgs e)
{
    ((e.Item as GridEditableItem)["NO"].Controls[0] as TextBox).Text = "007";
}

我可以写一些代码,但是给我一个编译错误... 帮我解决这个问题...

【问题讨论】:

    标签: c# grid telerik telerik-grid template-control


    【解决方案1】:

    它正在处理这个:

    .aspx

    <telerik:RadGrid ID="grdSettlement" runat="server" AllowFilteringByColumn="True"
        CellSpacing="0" DataSourceID="SqlDataSource1" GridLines="None" AllowAutomaticDeletes="True"
        AllowAutomaticUpdates="True" AutoGenerateColumns="False" AllowAutomaticInserts="true"
        OnItemDataBound="grdSettlement_ItemDataBound">
    

    .aspx.cs

    protected void grdSettlement_ItemDataBound(object sender, GridItemEventArgs e)
    {
        if (e.Item.IsInEditMode)
        {
            GridEditableItem item = (GridEditableItem)e.Item;
            RadNumericTextBox txtNo = item.FindControl("txtNo") as RadNumericTextBox;
            txtNo.Value = 7;
        }
    }
    

    【讨论】:

      【解决方案2】:
      //protected void grdSettlement_InsertCommand(object source, GridItemEventArgs e)
      protected void grdSettlement_InsertCommand(object source, GridCommandEventArgs e)
      {
          GridEditableItem ge = e.Item as GridEditableItem;
          if (ge != null)
          {
              //Good way is change TextBox ID 
              TextBox tb = ge["No"].FindControl("No") as TextBox;
              if (tb != null)
              {
                  tb.Text = "007";
              }
          }
      }
      

      控制不一定是第一位的。
      试试看。

      【讨论】:

      • 错误:编译错误描述:在编译服务此请求所需的资源期间发生错误。请查看以下特定错误详细信息并适当修改您的源代码。编译器错误消息:CS0123:“grdSettlement_InsertCommand”没有重载匹配委托“Telerik.Web.UI.GridCommandEventHandler”
      • 源错误:
      • 我的错误。我没有检查EventArgs参数是否正确。protected void grdSettlement_InsertCommand(object source, GridCommandEventArgs e)
      • 但这也不起作用...它损坏了网格的设计...当我单击“添加新”时,我想在文本框(ID="No")上显示“007”数字记录”...
      • 嘿,抱歉,评论有误...不是损坏设计,有一点错误我将 标签重新编写如下...&lt;telerik:RadGrid ID="grdSettlement" runat="server" AllowFilteringByColumn="True" CellSpacing="0" DataSourceID="SqlDataSource1" GridLines="None" AllowAutomaticDeletes="True" AllowAutomaticUpdates="True" AutoGenerateColumns="False" AllowAutomaticInserts="true" OnInsertCommand="grdSettlement_InsertCommand"&gt;
      【解决方案3】:

      请检查下面的代码sn-p。

      .aspx

      <telerik:GridTemplateColumn DataField="NO" FilterControlAltText="Filter NO column"
                          HeaderText="NO" SortExpression="NO" UniqueName="NO" DataType="System.Int64">
                          <InsertItemTemplate>
                              <telerik:RadNumericTextBox runat="server" ID="txtNo">
                              </telerik:RadNumericTextBox>
                          </InsertItemTemplate>
                          <ItemTemplate>
                              <%# Eval("NO") %>
                          </ItemTemplate>
                      </telerik:GridTemplateColumn>
      

      .aspx.cs

          protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
          {
      
      if (e.Item is GridEditableItem && e.Item.IsInEditMode && e.Item is GridDataInsertItem)
              {
                    GridEditableItem item = (GridEditableItem)e.Item;
                    RadNumericTextBox txtNo = item.FindControl("txtNo") as RadNumericTextBox;
                    txtNo.Value = 7;
              }
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-02
        • 2014-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-07
        相关资源
        最近更新 更多