提问人:Murat Gültekin 提问时间:9/29/2023 最后编辑:Theodor ZouliasMurat Gültekin 更新时间:10/3/2023 访问量:87
DevExpress GridView SQL:如何在不添加列的情况下向绘制的表添加新数据?
DevExpress GridView SQL: how to add new data to the drawn table without adding a column?
问:
我正在从 SQL Server 数据库中提取数据,而没有在 C# ASP.NET DevExpress GridView aspx 端添加任何列。如何更新我捕获的此数据或将新数据添加到表中?
在我的项目中,系统管理员添加了他自己的模块。添加此模块时,我的代码会根据模块名称在 SQL Server 数据库中创建一个表。创建模块后,它会逐一添加列。这些添加的列将作为列添加到 SQL Server 数据库中的表中。我正在将门户上添加的此表动态拉取到网格视图中,并且我想通过网格视图向此表添加新记录并编辑现有记录。
DataTable tbl = new DataTable();
SqlCommand cmdara = new SqlCommand("select * from " + tabloadi + " where TARIH BETWEEN @baslangic AND @bitis", db_baglanti);
cmdara.Parameters.AddWithValue("@baslangic", dateBasla.Value);
cmdara.Parameters.AddWithValue("@bitis", dateBitis.Value);
SqlDataAdapter adap = new SqlDataAdapter(cmdara);
adap.Fill(tbl);
gridModul.DataSource = tbl;
gridModul.DataBind();
<dx:ASPxGridView ID="gridModul" runat="server" KeyFieldName="id" ClientInstanceName="gridModul"
Theme="Office365" OnCustomColumnDisplayText="gridModul_CustomColumnDisplayText" OnDataBound="gridModul_DataBound" >
<ClientSideEvents RowDblClick="function(s,e) { s.StartEditRow(e.visibleIndex); }" />
<SettingsEditing Mode="PopupEditForm">
</SettingsEditing>
<Settings ShowHeaderFilterBlankItems="False" ShowHeaderFilterButton="True" />
<SettingsBehavior AllowFocusedRow="true" AllowSelectByRowClick="true" AllowEllipsisInText="true" AllowDragDrop="false" />
<SettingsPopup>
<EditForm HorizontalAlign="Center">
</EditForm>
</SettingsPopup>
<SettingsSearchPanel CustomEditorID="SearchButtonEdit" />
<SettingsPager PageSize="15" EnableAdaptivity="true">
<PageSizeItemSettings Visible="true"></PageSizeItemSettings>
</SettingsPager>
<SettingsExport EnableClientSideExportAPI="true" ExportSelectedRowsOnly="true" />
<SettingsDataSecurity AllowDelete="False" />
</dx:ASPxGridView>
答:
0赞
Timothy Harris
9/30/2023
#1
显示很简单,您只需将 AutoGenerateColumns=true 添加到标记中,它就会显示您发送给它的任何内容。
插入/更新将要求您遍历列并映射到动态 SQL INSERT/UPDATE 命令,其中列列表映射您正在尝试的插入/更新中的值。
您需要在标记中分配这些事件,并在代码隐藏中处理上述过程。
OnRowUpdating=“gridModul_RowUpdating” OnRowInserting=“gridModul_RowInserting”
在代码隐藏中:
OrderedDictionary odNew = e.NewValues;
foreach (DictionaryEntry formParam in odNew)
{
// build your dynamic SQL with formParam.Value
// matching formParam.Key to your column name;
}
评论
0赞
Murat Gültekin
9/30/2023
您好,我知道我会在代码后面做,但是插入时如何拉取表中可见的列?我想请您分享一个示例代码。
0赞
Timothy Harris
10/2/2023
例如,在 _RowInserting Event 中,您将拥有 e.NewValues 的 OrderedDictionary: //在事件 NewValues OrderedDictionary 格式的编辑表单中接受新值,构建 SQL 字符串,调用更新,刷新网格。OrderedDictionary odNew = e.NewValues;您将需要包括:使用 System.Collections.Specialized;对于 OrderedDictionary 类。在 _RowUpdating 方法中,您将有权访问 OldValues 和 NewValues OrderedDictionary 条目。键将是您的字段名称。
0赞
Murat Gültekin
10/3/2023
你能用示例代码回答吗?
评论