.Net - Add blank row option to Field.Options()
.Net - Add blank row option to Field.Options()
jaydonoghue
Posts: 3Questions: 1Answers: 0
Hi, love the new (easier) way to build up an option list from a database table in .Net land
Would it be possible to add a new option to add a blank row to the list of options? this is handy for dropdown lists. I've tweaked a local version to get this working if there is any interest.
FIeld.cs
private parameters
private bool _optsAddBlank;
Options methods
public Field Options(string table, string value, string label, Action<Query> condition = null, Func<Dictionary<string, object>, string> format = null, bool addblank = false)
{
_optsFn = null;
_optsTable = table;
_optsValue = value;
_optsLabel.Add(label);
_optsCond = condition;
_optsFormat = format;
_optsAddBlank = addblank;
return this;
}
public Field Options(string table, string value, IEnumerable<string> label, Action<Query> condition = null, Func<Dictionary<string, object>, string> format = null, bool addblank = false)
{
_optsFn = null;
_optsTable = table;
_optsValue = value;
foreach (var l in label)
{
_optsLabel.Add(l);
}
_optsCond = condition;
_optsFormat = format;
_optsAddBlank = addblank;
return this;
}
internal List<Dictionary<string, object>> OptionsExec(Database db)
{
if (_optsFn != null)
{
return _optsFn();
}
if (_optsTable == null)
{
return null;
}
var formatter = _optsFormat ??
(row => string.Join(" ", _optsLabel.Select(val => row[val] as string).ToArray()));
var fields = new List<string>(_optsLabel) { _optsValue };
var rows = db.SelectDistinct(_optsTable, fields, _optsCond)
.FetchAll();
var allrows = rows.Select(row => new Dictionary<string, object>
{
{"value", row[_optsValue]},
{"label", formatter(row)}
}).OrderBy(x => x["label"]).ToList();
if (_optsAddBlank)
{
allrows.Insert(0,new Dictionary<string,object>()
{
{"value",""},
{"label","" }
});
}
return allrows;
}
This discussion has been closed.
Replies
Thanks for the request - I can certainly see that it would be a useful feature. My one concern about adding it in is that it would also require a validator that will reject that empty value in case the user submits it.
However, this is something I will look into adding in future.
Allan
Thanks for considering. For my scenario, I want the blank value to be passed in (its an optional field) and use NULL into the database.
Using .SetFormatter(Format.NullEmpty()) resolves that issue.
An update on this for anyone who finds this discussion though the search options - Editor 1.5.4 introduced a
placeholder
option to the-field select
type that makes this really easy on the client-side.Allan