c# - Reading data from sitecore webforms for marketeers database -


i want build custom interface (a separate aspx page) manage data put webforms marketeers (wffm) database, , 1 form. must possible edit data , select records particular sortings , pagings. database configured sqlite.

is possible , recommended, or plain xml saved wffm database? , how should go it?

this doable, though select query data out of wffm bit funky because stored loose in 1 huge table called "field" trail of guids tie stored values form came , field.

provided below part of export excel utility wrote wffm data. builds datatable object submitted form results. adapt other structure without work though.

public string connectionstringwffm = "user id=sitecore_admin;password=xxx;data source=sitecoredbserver.com;database=sitecore_webforms";  protected datatable builddatatable(item formitem) {     list<formresult> formresults = formresults(formitem.id.guid);     list<field> distinctfields = distinctfields(formitem.id.guid);      var dt = new datatable();     dt.columns.add("submission_datetime", typeof (string));     foreach (field field in distinctfields)     {         var datacolumn = new datacolumn("_" + field.id.tostring("n"), typeof (string));         datacolumn.caption = field.name.replace(" ", "_");         dt.columns.add(datacolumn);     }      foreach (formresult formresult in formresults)     {         var connection = new sqlconnection();         connection.connectionstring = connectionstringwffm;         var command = new sqlcommand();         command.connection = connection;         command.commandtext = "select fieldid, value field formid=@formid order fieldid";         command.parameters.add("@formid", sqldbtype.uniqueidentifier).value = formresult.id;         connection.open();         sqldatareader reader = command.executereader();          datarow datarow = dt.newrow();         datarow["submission_datetime"] = formresult.timestamp.tostring("mm/dd/yyyy hh:mm:ss");         while (reader.read())         {             datarow["_" + reader.getguid(0).tostring("n")] = reader.getvalue(1).tostring().replace("<item>", "").replace("</item>", "");         }         dt.rows.add(datarow);          reader.close();         connection.close();     }      return dt; }  public list<field> distinctfields(guid formitemid) {     var connection = new sqlconnection();     connection.connectionstring = connectionstringwffm;     var command = new sqlcommand();     command.connection = connection;     command.commandtext = "select distinct fieldid field formid in (select id form formitemid=@formitemid) order fieldid";     command.parameters.add("@formitemid", sqldbtype.uniqueidentifier).value = formitemid;     connection.open();     sqldatareader reader = command.executereader();      var results = new list<field>();     int count = 0;     while (reader.read())     {         var field = new field();         field.id = reader.getguid(0);         database database = factory.getdatabase("master");         item = database.getitem(new id(field.id));         if (i != null && i.displayname != null)         {             field.name = i.displayname;         }         else         {             field.name = "field" + count;         }         results.add(field);         count += 1;     }      reader.close();     connection.close();      return results; }  public list<formresult> formresults(guid formitemid) {     var connection = new sqlconnection();     connection.connectionstring = connectionstringwffm;     var command = new sqlcommand();     command.connection = connection;     command.commandtext = "select id, timestamp form formitemid=@formitemid";     command.parameters.add("@formitemid", sqldbtype.uniqueidentifier).value = formitemid;     connection.open();     sqldatareader reader = command.executereader();      var results = new list<formresult>();      while (reader.read())     {         var result = new formresult();         result.id = reader.getguid(0);         result.timestamp = reader.getdatetime(1);         results.add(result);     }      reader.close();     connection.close();      return results; }  public class formresult {     public guid id { get; set; }     public datetime timestamp { get; set; } }  public class field {     public guid id { get; set; }     public string name { get; set; } } 

Comments

Popular posts from this blog

c# - How Configure Devart dotConnect for SQLite Code First? -

java - Copying object fields -

c++ - Clear the memory after returning a vector in a function -