我遇到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我已经编辑了值,我可以获得其他值???
答案 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方法中查看/获取两个列的值。
请查看以下链接以获取更多信息。
答案 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