Вам нужно разбить строку на группы, которые начинаются с заглавных букв. Один краткий способ сделать это с помощью регулярного выражения:
let molecule = "NaCl"
let arr = molecule.match(/([A-Z][a-z]*)/g) // match uppercase letter followed by 0 or more lower case letters
console.log(arr)
Оттуда, похоже, вы хотите отобразить их и добавить 1
. Это даст вам массив, который вы затем сможете объединить вместе с join('')
let m = "NaCl"
function countAtoms(molecule) {
var element = molecule.match(/([A-Z][a-z]*)/g)
return element.map(el => el+1).join('')
}
console.log(countAtoms(m))
Существует 2 вещи, которые необходимо сделать для разбираний в этом.
Вручную обработайте событие Sorting в сетке и используйте этого помощника, которого я записал в вид SortExpression и SortDirection:
public static IQueryable<T> SortBy<T>(IQueryable<T> source, string sortExpression, SortDirection direction) {
if (source == null) {
throw new ArgumentNullException("source");
}
string methodName = "OrderBy";
if (direction == SortDirection.Descending) {
methodName += "Descending";
}
var paramExp = Expression.Parameter(typeof(T), String.Empty);
var propExp = Expression.PropertyOrField(paramExp, sortExpression);
// p => p.sortExpression
var sortLambda = Expression.Lambda(propExp, paramExp);
var methodCallExp = Expression.Call(
typeof(Queryable),
methodName,
new[] { typeof(T), propExp.Type },
source.Expression,
Expression.Quote(sortLambda)
);
return (IQueryable<T>)source.Provider.CreateQuery(methodCallExp);
}
дб. Продукты. SortBy (e. SortExpression, e. SortDirection)
Проверьте мое сообщение в блоге на то, как сделать это:
больше информации о сортировке в gridview может быть найдено здесь: MSDN Gridview, сортировка методологии, используемой для получения данных, не должна иметь значения, можно использовать ту же сортировку.
добавьте:
AllowSorting="true"
к <asp:GridView />
тег, который должен сделать это
То, когда я делаю это Одно, это дает ошибку "GridView 'GridView1', запустило событие Sorting, которое не было обработано.
Я имел, которые происходят прежде... Я только что создал одноразовый обработчик, и затем все, казалось, начинало работать после этого. Не самое симпатичное решение, но это работало на меня.
Тем не менее я не видел ссылки на источник данных в Вашем коде GridView. Вам будет нужно что-то вроде этого:
<asp:LinqDataSource ID="dsMyDataSource" runat="server"
DataContextTypeName="MyDataContext"
TableName="MyTable"
AllowSort="true" />
И затем в Вашем GridView:
<asp:GridView ID="gvMyGridView" runat="server" DataSourceID="dsMyDataSource" ... />
В Свойствах Панель дважды щелкают по Записи Сортировки. Будет создана новая Функция. В этой Функции пишут Код для заполнения Gridview. Единственная разница состоит в том, чтобы изменить запрос на основе GridViewSortEventArgs e
e. SortExpression и
Возрастание e. SortDirection allways :-(
Я надеюсь, что этот очень короткий Ответ помогает
В половине псевдокода для SQL-запроса
string Query= string.Empty;
string SortExpression = string.Empty;
// HDFSort is an HiddenField !!!
protected void SortCommand_OnClick(object sender, GridViewSortEventArgs e)
{
SortExpression = e.SortExpression;
Query = YourQuery + " ORDER BY "+SortExpression +" "+ HDFSort.Value ;
HDFSort.Value = HDFSort.Value== "ASC" ? "DESC" : "ASC";
RefreshGridView();
}
protected void RefreshGridView()
{
GridView1.DataSource = DBObject.GetData(Query);
GridView1.DataBind();
}