asp.Netにおけるgridviewのバインドデータソースの削除・変更を実現

12378 ワード

gridviewは比較的柔軟で、excelのような使い方があり、表に直接追加したり、修正したりすることができます.セルデータ比較セグメントの表は使いやすいです.
参考になるhttps://blog.csdn.net/yingzhaom/article/details/50614599
これに基づいてボタンをクリックしてモードボックスをポップアップして操作しました.このようなニーズがあれば、私のコードを参照してください.
まず、データ・ソースのバインドから開始します.
ページのロード時にデータをバインドします(データベース接続をカプセル化できます.後で何度も使用します):
//     
SqlConnection sqlcon;
SqlCommand sqlcom;
string strCon = "Data Source=(local);Database=    ;Uid=  ;Pwd=  ";
protected void Page_Load(object sender, EventArgs e)
        {
            
            if (!IsPostBack)
            {
                //   table
                bind_gv();
            }
        }
protected void bind_gv()
        {
            string sqlstr = "select * from  ";
            sqlcon = new SqlConnection(strCon);
            SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon);
            DataSet myds = new DataSet();
            sqlcon.Open();
            myda.Fill(myds, " ");
            gvTag.DataSource = myds;
            gvTag.DataKeyNames = new string[] { "tid" };
            gvTag.DataBind();
            sqlcon.Close();
        }

フロントエンドコード(テーブル内のカラムのdataFieldはクエリのカラム名に対応):

                    
                        
                        
                        
                        
                        
                        
                        
                        
                           
                               
                               
                               
                           
                           
                       
                    
                    
                    
                        

ページングバックグラウンドコード:
protected void gvTag_PageIndexChanging(object sender, System.Web.UI.WebControls.GridViewPageEventArgs e)
        {
            gvTag.PageIndex = e.NewPageIndex;
            bind_gv();
        }
        
        protected void gvTag_DataBound(object sender, EventArgs e)
        {
            //           。
            GridViewRow pagerRow = gvTag.BottomPagerRow;
            if (pagerRow != null)
            {
                //             Label   。
                Label pageLabel = (Label)(pagerRow.Cells[0].FindControl("lblCurrentPage"));

                //       、   、   、       。
                ImageButton imgBtnFirst =
                  (ImageButton)(pagerRow.Cells[0].FindControl("imgBtnFirst"));
                ImageButton imgBtnPrev =
                  (ImageButton)(pagerRow.Cells[0].FindControl("imgBtnPrev"));
                ImageButton imgBtnNext =
                  (ImageButton)(pagerRow.Cells[0].FindControl("imgBtnNext"));
                ImageButton imgBtnLast =
                  (ImageButton)(pagerRow.Cells[0].FindControl("imgBtnLast"));

                //             、   、   、       。
                if (gvTag.PageIndex == 0)
                {
                    imgBtnFirst.Style.Add(HtmlTextWriterStyle.Visibility, "hidden");
                    imgBtnPrev.Style.Add(HtmlTextWriterStyle.Visibility, "hidden");
                }
                else if (gvTag.PageIndex == gvTag.PageCount - 1)
                {
                    imgBtnLast.Style.Add(HtmlTextWriterStyle.Visibility, "hidden");
                    imgBtnNext.Style.Add(HtmlTextWriterStyle.Visibility, "hidden");
                }
                else if (gvTag.PageCount <= 0)
                {
                    imgBtnFirst.Style.Add(HtmlTextWriterStyle.Visibility, "hidden");
                    imgBtnPrev.Style.Add(HtmlTextWriterStyle.Visibility, "hidden");
                    imgBtnNext.Style.Add(HtmlTextWriterStyle.Visibility, "hidden");
                    imgBtnLast.Style.Add(HtmlTextWriterStyle.Visibility, "hidden");
                }

                if (pageLabel != null)
                {
                    //          。
                    int currentPage = gvTag.PageIndex + 1;

                    pageLabel.Text = currentPage.ToString() +
                        " / " + gvTag.PageCount.ToString();
                }
            }
        }

フロントフレームコード:

                

バックグラウンドのバウンドと編集コード(中のdaoとimplはカプセル化されたデータベース接続と更新されたコードであり、TagInfoはカプセル化されたエンティティクラスである):
//      
        protected void Modify_Click(object sender, EventArgs e)
        {
            LinkButton link = sender as LinkButton;
            int index = Convert.ToInt32(link.CommandArgument);
            TagInfoDao tag = new TagInfoDaoImpl();
            TagInfo tagInfo = tag.findByTid(index);
            //  
            TidEdit.Text = index.ToString();
            TagEdit.Text = tagInfo.groupCode +","+ tagInfo.elementCode;
            TagNameEdit.Text = tagInfo.tagName;
            NotesEdit.Text = tagInfo.notes;
            //     
            ClientScriptManager scriptManager = ((Page)System.Web.HttpContext.Current.Handler).ClientScript;
            scriptManager.RegisterStartupScript(typeof(string), "", "$('#editModal').modal('show');", true);
            //  
            VRInfoDao vr = new VRInfoDaoImpl();
            List vrList = vr.findVRInfo("");
            ddlVREdit.DataSource = vrList;
            ddlVREdit.DataTextField = "code";
            ddlVREdit.DataValueField = "VID";
            ddlVREdit.DataBind();
            ddlVREdit.SelectedIndex = tagInfo.vid - 1;
        }
        //    
        protected void SaveEdit_Click(object sender, EventArgs e)
        {
            TagInfo tag = new TagInfo();
            tag.tid = Convert.ToInt32(TidEdit.Text);
            tag.groupCode = TagEdit.Text.Split(',')[0];
            tag.elementCode = TagEdit.Text.Split(',')[1];
            tag.tagName = TagNameEdit.Text;
            tag.notes = NotesEdit.Text;
            tag.vid = Convert.ToInt32(ddlVREdit.SelectedValue);
            TagInfoDao tagDao = new TagInfoDaoImpl();
            if (tagDao.updata(tag))
            {
                Alert("    !");
            }
            else
            {
                Alert("    !");
            }
            bind_gv();
        }

Alert弾枠コード:
public void Alert(string str_Message)
        {
            ClientScriptManager scriptManager = ((Page)System.Web.HttpContext.Current.Handler).ClientScript;
            scriptManager.RegisterStartupScript(typeof(string), "", "alert('" + str_Message + "');", true);
        }

バックグラウンドコードを削除するには
//  
        protected void Delete_Click(object sender, EventArgs e)
        {
            


            LinkButton link = sender as LinkButton;
            int index = Convert.ToInt32(link.CommandArgument);
            TagInfoDao tag = new TagInfoDaoImpl();
            if (tag.delete(index))
            {
                //    
                Alert("    ");
            }
            else
            {
                //    
                Alert("    ");
            }
            bind_gv();
        }

新しいのは編集と同じようにコードを入れません.