DevExpress GridView SQL:如何在不添加列的情况下向绘制的表添加新数据?

DevExpress GridView SQL: how to add new data to the drawn table without adding a column?

提问人:Murat Gültekin 提问时间:9/29/2023 最后编辑:Theodor ZouliasMurat Gültekin 更新时间:10/3/2023 访问量:87

问:

我正在从 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>
C# asp.net GridView DevExpress

评论

0赞 PMF 9/29/2023
你能把你所有的问题都改成英语吗?
0赞 Fildor 9/29/2023
请同时翻译标题。

答:

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
你能用示例代码回答吗?