0

jQGrid、行をダブルクリックすると、選択した行に関するより多くのデータを表示する別のページを開きたいと思います。選択した行に基づいてクエリを作成し、そのページに渡す必要があります。私jQGridは誰がログインするかに基づいて動的に作成されます。私はソフトウェアの学生であり、何をすべきかわかりません。オンラインで検索しましたが、どこにもありません。手伝ってください。さらに詳しい情報が必要な場合は、お知らせください。

<trirand:JQGrid ID="JQGrid1" runat="server" Width="760px" onsearching="JQGrid1_Searching" >         
    <Columns>

    </Columns>

    <PagerSettings ScrollBarPaging="true" PageSize="100" NoRowsMessage="Scroll to bottom to retrieve new page" />
    <AppearanceSettings HighlightRowsOnHover="true" /> 
    <ToolBarSettings ShowAddButton="true" ShowSearchToolBar="true" ShowRefreshButton="true" />
    <AddDialogSettings ReloadAfterSubmit="true" Caption="Add a new row" SubmitText="Add the row" Resizable="false" />   

</trirand:JQGrid>

関数:

public static DataTable GetAnimalsByClient(Client cli)
{
    DataTable dt = new DataTable();

    try
    {
        MySqlConnection connection = Database.Connect();
        string sql = string.Format("select a.animal_official_tag as AnimalOfficialTag, DATE_FORMAT(a.animal_date_of_birth,'%d/%m/%Y') AS DateOfBirth, a.animal_gender as AnimalGender, a.animal_breed as AnimalBreed, a.animal_jumbo as AnimalJumbo from animal a inner join herd_animal ha on a.animal_id = ha.animal_id join herd h on ha.herd_id = h.herd_id join client c on h.client_id = c.client_id where c.client_id = {0}", cli.ID);
        MySqlDataAdapter adapter = new MySqlDataAdapter(sql, connection);

        adapter.Fill(dt);
        adapter.Dispose();

        Database.Disconnect(connection);
    }
    catch (Exception exp)
    {
        StackFrame stackFrame = new StackFrame();
        MethodBase methodBase = stackFrame.GetMethod();
        Error.SaveError(methodBase.Name, exp.Message);
    }
    return dt;
}


public DataTable GetCurrentStock()
{
    try
    {
        DataTable dt = (DataTable)AnimalDao.GetAnimalsByClient(UserSession.GetClient());

        List<DataColumn> lstCol = new List<DataColumn>();
        foreach (DataColumn col in dt.Columns)
        {
            lstCol.Add(col);
        }

        for (int i = 0; i < dt.Columns.Count; i++)
        {
            JQGridColumn col = new JQGridColumn();
            col.DataField = lstCol[i].ColumnName;
            col.HeaderText = lstCol[i].ColumnName;
            col.Width = lstCol[i].ColumnName.Length;
            col.Visible = true;
            col.Editable = true;
            JQGrid1.Columns.Add(col);
        }

        return dt;
    }
    catch (Exception exp)
    {
        return null;
    }
}

protected void Page_Load(object sender, EventArgs e)
{
    if (!UserSession.LoggedIn())
    {
        Response.Redirect("Default.aspx");
    }

    RefreshGrid();
    JQGrid1.DataSource = GetCurrentStock();
    JQGrid1.DataBind();      
}
4

2 に答える 2

0

RowIDを含むクエリ文字列を新しいページに送信するJavaScript関数を作成するだけです。

選択した行のRowIDは、次の方法で取得できます。

var grid = jQuery("#<%= JQgrid1.ClientID %>");
var rowKey = grid.getGridParam("selrow");

次に、これを使用して新しいウィンドウを開き、rowIDを送信して必要な情報を開きます。

window.open("http://yourwebsite.com?RowID=" + rowKey);

次に、ダブルクリックイベントをjavascript関数に接続するだけです。

<trirand:JQGrid ID="JQGrid1" runat="server" Width="760px"
        onsearching="JQGrid1_Searching"
        ClientSideEvents-RowDoubleClick="[function name]">

お役に立てれば。

于 2012-06-29T18:22:20.933 に答える
0

おかげでそれは私を助けました。以下の関数を作成しました

<script type="text/javascript">
    function doubleClick(id) {
        window.location = '<%= ResolveUrl("http://localhost:9110/AgriNet%20Website/CowCard.aspx?a=") %>' + id;
    }

    function GetGrid() {
        var grid = $("#<%= JQGrid1.ClientID %>");return grid;
    }

</script>

jQGridを動的に作成する場合、最初の列を主キーとして割り当てました。

for (int i = 0; i < dt.Columns.Count; i++)
        {
            JQGridColumn col = new JQGridColumn();
            col.DataField = lstCol[i].ColumnName;
            col.HeaderText = lstCol[i].ColumnName;
            col.Width = lstCol[i].ColumnName.Length;
            col.Visible = true;
            col.Editable = true;
            if (i == 0)
            {
                col.PrimaryKey = true;
            }
            JQGrid1.Columns.Add(col);
        }

そして、行をダブルクリックした後に表示されるページに、このコード行を追加しました。

Session["selectedID"] = Request.QueryString["a"].ToString();

それは今私のために働いています。jQGridの行をダブルクリックすると、前のページで選択した行に関する詳細情報を表示するために必要なデータとともに、別のページにリダイレクトされます。

于 2012-07-02T12:19:29.347 に答える