Слияние кода завершено, страница обновится автоматически
using DeskRedis.Exceptions;
using DeskRedis.Model;
using DeskRedis.Util;
using ServiceStack.Redis;
using System;
using System.Linq;
using System.Windows;
namespace DeskRedis
{
/// <summary>
/// WinAddKey.xaml 的交互逻辑
/// </summary>
public partial class WinAddKey : Window
{
#region 私有变量
private readonly NodeInfo nodeInfo;
#endregion
#region 事件委托
/// <summary>
/// 当添加新项成功时发生。
/// </summary>
public event Action<string> OnAdded;
public event Action<string> OnError;
#endregion
#region 构造方法
public WinAddKey(NodeInfo nodeInfo)
{
InitializeComponent();
string[] types = Enum.GetNames(typeof(RedisKeyType))
.Where(p => !"none".Equals(p.ToLower()))
.ToArray();
foreach (string item in types)
{
this.cbbType.Items.Add(item);
}
this.cbbType.SelectedIndex = 0;
this.nodeInfo = nodeInfo;
}
#endregion
#region 私有方法
#endregion
#region 本地事件
/// <summary>
/// 当鼠标点击“保存”按钮时发生。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BtnSave_Click(object sender, RoutedEventArgs e)
{
try
{
AssertUtil.FormDataValidate("请输入键名", () => { return string.IsNullOrEmpty(this.tbKey.Text.Trim()); });
AssertUtil.FormDataValidate("请选择类型", () =>
{
return this.cbbType.SelectedItem == null || string.IsNullOrEmpty(this.cbbType.SelectedItem.ToString());
});
AssertUtil.FormDataValidate("请输入值", () => { return string.IsNullOrEmpty(this.tbValue.Text.Trim()); });
string key = this.tbKey.Text.Trim();
string type = this.cbbType.SelectionBoxItem.ToString();
Enum.TryParse(type, out RedisKeyType redisKeyType);
string value = this.tbValue.Text.Trim();
switch (redisKeyType)
{
case RedisKeyType.String:
{
GlobalBusiness.RedisCaches[nodeInfo.ConfigId]
.Add<string>(key, value, nodeInfo.DbIndex);
}
break;
case RedisKeyType.List:
{
GlobalBusiness.RedisCaches[nodeInfo.ConfigId]
.AddList(key, value, nodeInfo.DbIndex);
}
break;
case RedisKeyType.Set:
{
GlobalBusiness.RedisCaches[nodeInfo.ConfigId]
.AddSet(key, value, nodeInfo.DbIndex);
}
break;
case RedisKeyType.SortedSet:
{
string strScore = this.tbScore.Text.Trim();
AssertUtil.FormDataValidate("请输入排序号!", () => { return string.IsNullOrEmpty(strScore); });
if (!double.TryParse(strScore, out double score))
{
throw new IllegalFormDataException("排序号不合法!");
}
GlobalBusiness.RedisCaches[nodeInfo.ConfigId]
.AddSortedSet(key, value, score, nodeInfo.DbIndex);
}
break;
case RedisKeyType.Hash:
{
string hashKey = this.tbHashKey.Text.Trim();
AssertUtil.FormDataValidate("请输入HashKey!", () => { return string.IsNullOrEmpty(hashKey); });
GlobalBusiness.RedisCaches[nodeInfo.ConfigId]
.AddHash(key, hashKey, value, nodeInfo.DbIndex);
}
break;
default:
break;
}
this.OnAdded?.Invoke(key);
MessageBox.Show("添加成功");
this.Close();
}
catch (IllegalFormDataException ex)
{
MessageBox.Show(ex.Message);
}
catch (RedisException ex)
{
MessageBox.Show(ex.Message);
}
catch (Exception ex)
{
this.OnError?.Invoke(ex.Message);
}
}
/// <summary>
/// 当键类型变化时发生。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void CbbType_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
Enum.TryParse(this.cbbType.SelectedItem.ToString(), out RedisKeyType type);
switch (type)
{
case RedisKeyType.String:
case RedisKeyType.List:
case RedisKeyType.Set:
this.gridScore.Visibility = Visibility.Collapsed;
this.gridHashKey.Visibility = Visibility.Collapsed;
break;
case RedisKeyType.SortedSet:
this.gridScore.Visibility = Visibility.Visible;
this.gridHashKey.Visibility = Visibility.Collapsed;
break;
case RedisKeyType.Hash:
this.gridScore.Visibility = Visibility.Collapsed;
this.gridHashKey.Visibility = Visibility.Visible;
break;
default:
break;
}
}
/// <summary>
/// 当鼠标点击“取消”按钮时发生。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BtnCancel_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
#endregion
}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарий ( 0 )