c#简单应用之维护页面

SQL Server的增删改查

一次关于报警维护界面的书写

采用Fineui+C#+SQLServer完成一个简单的报警维护页面

开发工具 Visual Studio

开发成果

报警维护页面

如图所有功能均可实现

  • 输入类别(必须)和备注后点击新增将数据插入数据库并呈现在下表中


    若该类别已存在,则提示不要增加
  • 输入关键字可进行查询,查询结果在下表中展示


    查询页面支持单个字体
  • 点击删除,提示是否删除,确定后删除成功


    提示是否删除

开发流程

  • 首先添加一个新建项


    私命名为MachineWarningProgramName
  • 构造前端页面(基于FineUI)

<form id="form1" runat="server">
  <f:PageManager ID="PageManager1" AutoSizePanelID="Panel1" runat="server" />
    <f:Panel ID="Panel1" runat="server" BodyPadding="5px" ShowBorder="false" Layout="VBox" BoxConfigAlign="Stretch" BoxConfigPosition="Start" ShowHeader="false" Title="報警維護">
      <Items>                
        <f:Form ID="Form" runat="server" ShowHeader="false" ShowBorder="false" LabelWidth="90px">
          <Rows>
            <f:FormRow>
              <Items>
                <f:Label ID="Label2" Text="" Width="100" MarginRight="8" runat="server">
                </f:Label>
              </Items>
            </f:FormRow>
          </Rows>
        </f:Form>
      <f:Grid ID="Grid1" runat="server" BoxFlex="1" ShowBorder="true" ShowHeader="false" DataKeyNames="ProgramName,ErrorMessage" EnableRowDoubleClickEvent="true" OnRowCommand="Grid1_RowCommand"  OnRowDoubleClick="Grid1_RowDoubleClick">
        <Toolbars>
          <f:Toolbar ID="Toolbar1" runat="server">
            <Items>
              <f:TextBox ID="tbProgramName" runat="server" Label="報警類別" LabelWidth="70px" Width="260px" TabIndex="1"></f:TextBox>
              <f:TextBox ID="tbErrorMessage" runat="server" Label="信息備註" LabelWidth="70px" Width="260px" TabIndex="1"></f:TextBox>
            </Items>
          </f:Toolbar>
          <f:Toolbar ID="Toolbar2" runat="server">
            <Items>
              <f:Button ID="btnSave" runat="server" Text="新增" OnClick="btnSave_Click" Icon="Add" ValidateForms="Form" ></f:Button>
              <f:Button ID="btnSearch" runat="server" Text="查詢" OnClick="btnSearch_Click" Icon="Zoom" ></f:Button>
              <f:HiddenField ID="hidLx" runat="server"></f:HiddenField> 
              <f:HiddenField ID="HidCb" runat="server"></f:HiddenField> 
              <f:HiddenField ID="HidQxDm" runat="server"></f:HiddenField>
              <f:HiddenField ID="HidDeptId" runat="server"></f:HiddenField> 
            </Items>
          </f:Toolbar>
        </Toolbars>
        <Columns>
          <f:RowNumberField Width="40px" />                        
          <f:BoundField DataField="ProgramName" HeaderText="報警類別"  Width="100px"  HeaderTextAlign="Center"  />
          <f:BoundField DataField="ErrorMessage" HeaderText="信息維護" Width="100px"  HeaderTextAlign="Center" />
          <f:BoundField DataField="C_USER" HeaderText="錄入人" Width="160px"  HeaderTextAlign="Center" />                  
          <f:BoundField DataField="C_Date" HeaderText="錄入時間" Width="140px" DataFormatString="{0:yyyy/MM/dd}" HeaderTextAlign="Center" />
          <f:BoundField DataField="U_USER" HeaderText="更新人" Width="160px"  HeaderTextAlign="Center"  />
          <f:BoundField DataField="U_Date" HeaderText="更新時間" Width="160px" DataFormatString="{0:yyyy/MM/dd}"  HeaderTextAlign="Center" /> 
          <f:LinkButtonField ColumnID="deleteField" TextAlign="Center" Icon="Delete" HeaderText="刪除" ToolTip="刪除" ConfirmText="確定刪除?" ConfirmTarget="Self" CommandName="Delete" Width="100px"></f:LinkButtonField>
        </Columns>
      </f:Grid>              
    </Items>
  </f:Panel>      
</form>

前端构造也就都那么回事,看着长主要是在做格式。

  • 功能实现
    通过前端各个数据的绑定,进行后端数据的书写。
protected void Page_Load(object sender, EventArgs e)
{
  Grid1Bind();
}

private void Grid1Bind()
{
  string strDept = " select ProgramName,ErrorMessage,C_user,C_DATE,U_user,U_DATE from  ProgramError_ProgramName where ProgramName like '%" + tbProgramName.Text.Trim() + "%' and ErrorMessage like '%" + tbErrorMessage.Text.Trim() + "%'";
  DataTable dt = DbHelperSQL.Query(strDept).Tables[0];
  Grid1.DataSource = dt;
  Grid1.DataBind();
  // 查詢programerror_programname表內所有programname數據
}

protected void Grid1_RowCommand(object sender, GridCommandEventArgs e)
{
  DataTable dt = Grid1.DataSource as DataTable;
  string programname = Grid1.DataKeys[e.RowIndex][0].ToString();
  // 選取programname所在行
  if (e.CommandName == "Delete")
  {
    string sql = "delete from ProgramError_ProgramName where programName ='" + dt.Rows[e.RowIndex]["programName"].ToString() + "'";
    DbHelperSQL.ExecuteSql(sql);
    Grid1Bind();
  };
  // command事件觸發delete,執行刪除數據
}

protected void btnSearch_Click(object sender, EventArgs e)
{
  Grid1Bind();
}

protected void btnSave_Click(object sender, EventArgs e)
{
  if (tbProgramName.Text.Trim() == "")
  {
    Alert.Show("報警類別不能為空!");
    return;
  }
  StringBuilder sb = new StringBuilder();
  if (hidLx.Text.Trim() == "")
  {
    string strSql = "select * from [ProgramError_ProgramName] where   ProgramName ='" + tbProgramName.Text.Trim() + "' and [ErrorMessage]='" + tbErrorMessage.Text.Trim().Trim() + " ' ";
    DataTable dt = DbHelperSQL.Query(strSql).Tables[0];
    if (dt.Rows.Count > 0)
    {
      Alert.Show("要保存的報警類別已存在,請不要重新增加!");
      return;
    }
    sb.AppendLine(" insert into ProgramError_ProgramName (ProgramName,ErrorMessage,C_user,C_DATE) ");
    sb.AppendLine(" values (N'" + tbProgramName.Text.Trim() + "','" + tbErrorMessage.Text.Trim().Trim() + "' ");
    sb.AppendLine("  ,'" + GetIdentityName() + "',getdate() )");
    }
  else
  {
    sb.AppendLine(" update ProgramError_ProgramName  set ProgramName ='" + tbProgramName.Text.Trim() + "',ErrorMessage='" + tbErrorMessage.Text.Trim().Trim() + "' ");
    sb.AppendLine(" ,U_USER='" + GetIdentityName() + "',U_DATE=getdate() ");
    sb.AppendLine(" where ProgramName ='" + HidCb.Text.Trim() + "'  ");
  }
  try
  {
    int rows = DbHelperSQL.ExecuteSql(sb.ToString());
    if (rows > 0)
    {
      tbProgramName.Text = "";
      tbProgramName.Enabled = true;
      tbErrorMessage.Text = "";
      hidLx.Text = "";
      Grid1Bind();
      Alert.Show("添加成功!");
    }
  }
  catch (Exception ex)
  {
    Alert.Show("添加失敗:" + ex);
    return;
  }
}

protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e)
{
  hidLx.Text = "1";
  HidCb.Text = Grid1.DataKeys[e.RowIndex][0].ToString();
  tbProgramName.Enabled = false;
  tbProgramName.Text = Grid1.DataKeys[e.RowIndex][0].ToString();
  tbErrorMessage.Text = Grid1.DataKeys[e.RowIndex][1].ToString();
}

代码真多--
用了将近一星期吸收理解sql server

have a nice day!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,776评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,527评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,361评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,430评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,511评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,544评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,561评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,315评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,763评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,070评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,235评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,911评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,554评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,173评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,424评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,106评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,103评论 2 352

推荐阅读更多精彩内容